Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ИНТЕРФЕЙСы REST API Graph позволяют перечислять пользовательские графы и запрашивать их в Microsoft Sentinel озера данных. Используйте эти API для программного взаимодействия с пользовательскими графами из любого HTTP-клиента, конвейера автоматизации или пользовательского приложения.
Дополнительные сведения о создании пользовательских графов см. в разделе Создание пользовательских графов в озере данных безопасности.
Проверка подлинности
REST API Graph используют проверку подлинности маркера носителя OAuth 2.0. Чтобы вызвать API- интерфейсы, получите маркер доступа из Microsoft Entra ID и включите его в Authorization заголовок каждого запроса.
Получение токена доступа
- Зарегистрируйте приложение в Microsoft Entra ID или используйте существующую регистрацию приложения. Дополнительные сведения см. в разделе Регистрация приложения.
- Предоставьте приложению необходимые разрешения для Microsoft Defender XDR.
- Запросите маркер доступа с помощью потока учетных данных клиента OAuth 2.0 или от имени вошедшего пользователя.
Включение маркера в запросы
Добавьте маркер в Authorization заголовок каждого запроса API:
Authorization: Bearer <access_token>
Базовый URL-адрес
Все конечные точки REST API Graph используют следующий базовый URL-адрес:
https://api.securityplatform.microsoft.com
Перечисление графов
Список всех пользовательских графов, доступных в клиенте.
Запрос
GET https://api.securityplatform.microsoft.com/graphs/graph-instances?graphTypes=Custom
Тело запроса не требуется.
Отклик
{
"value": [
{
"name": "custom_graph_10",
"mapFileName": "custom_graph_10",
"mapFileVersion": "1.0.0",
"graphDefinitionName": "custom_graph_10",
"graphDefinitionVersion": "1.0.0",
"refreshFrequency": "00:00:00",
"createTime": "11/04/2025 22:32:43",
"lastUpdateTime": "11/04/2025 22:32:43",
"lastSnapshotTime": "2025-11-04T22:34:04.7105015+00:00",
"lastSnapshotRequestTime": "2025-11-04T22:32:52.0187838+00:00",
"instanceStatus": "Ready"
},
{
"name": "notebook_graph_5",
"mapFileName": null,
"mapFileVersion": null,
"graphDefinitionName": "notebook_graph_5",
"graphDefinitionVersion": "1.0.0",
"refreshFrequency": "00:00:00",
"createTime": "11/04/2025 20:15:22",
"lastUpdateTime": "11/04/2025 20:15:22",
"lastSnapshotTime": null,
"lastSnapshotRequestTime": null,
"instanceStatus": "Creating"
}
]
}
Свойства ответа
| Свойство | Тип | Описание |
|---|---|---|
name |
String | Имя экземпляра графа. |
mapFileName |
String | Имя файла карты, связанного с графом. |
mapFileVersion |
String | Версия файла карты. |
graphDefinitionName |
String | Имя определения графа, используемого для создания этого экземпляра. |
graphDefinitionVersion |
String | Версия определения графа. |
refreshFrequency |
String | Частота обновления данных графа. |
createTime |
String | При создании экземпляра графа. |
lastUpdateTime |
String | При последнем обновлении экземпляра графа. |
lastSnapshotTime |
String | Метка времени последнего snapshot данных. |
lastSnapshotRequestTime |
String | При запросе последнего snapshot. |
instanceStatus |
String | Текущее состояние экземпляра графа. |
Коды состояния ответа
| Код состояния | Описание |
|---|---|
| 200 OK (Запрос выполнен успешно) | Список получен успешно. |
Запрос графа
Запрос пользовательского графа с помощью языка запросов Graph (GQL). Дополнительные сведения о GQL см. в справочнике по GQL для Microsoft Sentinel графа.
Примечание.
{graphName} ссылается на name граф, возвращенный операцией со списком.
Запрос
POST https://api.securityplatform.microsoft.com/graphs/graph-instances/{graphName}/query
Content-Type: application/json
Текст запроса
{
"query": "string",
"queryLanguage": "GQL"
}
Свойства текста запроса
| Свойство | Тип | Обязательный | Описание |
|---|---|---|---|
query |
String | Да | GQL-запрос для выполнения. |
queryLanguage |
String | Да | Язык запросов. Должно быть задано значение GQL. |
responseFormats |
Массив строк | Нет | Управляет форматом ответа запроса. Принимает одно или оба следующих значения: Table, Graph. По умолчанию используется значение , Table если не указано. |
Форматы ответов
Свойство responseFormats управляет структурой ответа:
| Формат | Описание |
|---|---|
Table |
Возвращает необработанные табличные данные (по умолчанию, если не указано). |
Graph |
Возвращает структурированные графом данные с узлами и ребрами. |
Вы можете запросить один или оба формата:
-
["Table"]— возвращает только табличный формат. -
["Graph"]— возвращает только формат графа. -
["Table", "Graph"]— возвращает оба формата в ответе.
Пример. Базовый запрос
POST https://api.securityplatform.microsoft.com/graphs/graph-instances/{graphName}/query
Content-Type: application/json
{
"query": "MATCH (u)-[v]->(w) RETURN * LIMIT 2",
"queryLanguage": "GQL"
}
Пример. Запрос с обоими форматами ответов
POST https://api.securityplatform.microsoft.com/graphs/graph-instances/{graphName}/query
Content-Type: application/json
{
"query": "MATCH (n:User)-[r:HasAccess]->(m:Resource) RETURN n, r, m LIMIT 100",
"responseFormats": ["Table", "Graph"],
"queryLanguage": "GQL"
}
Пример ответа (оба формата)
{
"status": 200,
"result": {
"rawData": {
"tables": [
{
"tableName": "PrimaryResult",
"columns": [
{
"columnName": "u",
"dataType": "dynamic"
},
{
"columnName": "r",
"dataType": "dynamic"
},
{
"columnName": "g",
"dataType": "dynamic"
}
],
"rows": [
[
{
"oid": "node-user-001",
"labels": ["User"],
"properties": {
"name": "Aino Rebane",
"email": "aino.rebane@contoso.com",
"department": "Engineering"
}
},
{
"oid": "edge-001",
"labels": ["HasRole"],
"sourceOid": "node-user-001",
"targetOid": "node-group-001",
"properties": {
"assignedDate": "2024-01-15T10:30:00Z",
"assignedBy": "admin@contoso.com"
}
},
{
"oid": "node-group-001",
"labels": ["Group"],
"properties": {
"name": "Administrators",
"description": "System administrators group",
"memberCount": 25
}
}
]
]
}
]
},
"graph": {
"nodes": [
{
"id": "node-user-001",
"labels": ["User"],
"properties": {
"name": "Aino Rebane",
"email": "aino.rebane@contoso.com",
"department": "Engineering"
}
},
{
"id": "node-group-001",
"labels": ["Group"],
"properties": {
"name": "Administrators",
"description": "System administrators group",
"memberCount": 25
}
},
{
"id": "node-group-002",
"labels": ["Group"],
"properties": {
"name": "Engineering Team",
"description": "Software engineering team",
"memberCount": 150
}
}
],
"edges": [
{
"id": "edge-001",
"sourceId": "node-user-001",
"targetId": "node-group-001",
"labels": ["HasRole"],
"properties": {
"assignedDate": "2024-01-15T10:30:00Z",
"assignedBy": "admin@contoso.com"
}
},
{
"id": "edge-002",
"sourceId": "node-user-001",
"targetId": "node-group-002",
"labels": ["HasRole"],
"properties": {
"assignedDate": "2024-02-01T14:20:00Z",
"assignedBy": "hr@contoso.com"
}
}
]
}
},
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd"
}
Коды состояния ответа
| Код состояния | Описание |
|---|---|
| 200 OK (Запрос выполнен успешно) | Запрос выполнен успешно. |
| 404 Не найдено | Указанный экземпляр графа не существует. |
Пример ответа об ошибке
{
"error": {
"code": "GraphInstanceNotFound",
"message": "Graph Instance CustomGraph1 does not exist.",
"target": null,
"details": []
}
}