Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As APIs REST do Graph permitem-lhe listar e consultar gráficos personalizados no seu Microsoft Sentinel data lake. Utilize estas APIs para interagir programaticamente com os seus grafos personalizados a partir de qualquer cliente HTTP, pipeline de automatização ou aplicação personalizada.
Para obter mais informações sobre como criar gráficos personalizados, veja Criar gráficos personalizados no data lake de segurança.
Autenticação
As APIs REST do Graph utilizam a autenticação do token de portador OAuth 2.0. Para chamar as APIs, obtenha um token de acesso do Microsoft Entra ID e inclua-o no Authorization cabeçalho de cada pedido.
Obter um token de acesso
- Registe uma aplicação no Microsoft Entra ID ou utilize um registo de aplicações existente. Para obter mais informações, veja Registar uma aplicação.
- Conceda à aplicação as permissões necessárias para Microsoft Defender XDR.
- Peça um token de acesso com o fluxo de credenciais de cliente OAuth 2.0 ou em nome de um utilizador com sessão iniciada.
Incluir o token nos pedidos
Adicione o token ao Authorization cabeçalho de cada pedido de API:
Authorization: Bearer <access_token>
URL base
Todos os pontos finais da API REST do Graph utilizam o seguinte URL base:
https://api.securityplatform.microsoft.com
Listar gráficos
Liste todos os gráficos personalizados disponíveis no seu inquilino.
Solicitação
GET https://api.securityplatform.microsoft.com/graphs/graph-instances?graphTypes=Custom
Nenhum corpo de solicitação é obrigatório.
Resposta
{
"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"
}
]
}
Propriedades de resposta
| Propriedade | Tipo | Descrição |
|---|---|---|
name |
Cadeia de caracteres | O nome da instância do gráfico. |
mapFileName |
Cadeia de caracteres | O nome do ficheiro de mapa associado ao gráfico. |
mapFileVersion |
Cadeia de caracteres | A versão do ficheiro de mapa. |
graphDefinitionName |
Cadeia de caracteres | O nome da definição de gráfico utilizada para criar esta instância. |
graphDefinitionVersion |
Cadeia de caracteres | A versão da definição do gráfico. |
refreshFrequency |
Cadeia de caracteres | Com que frequência os dados do grafo são atualizados. |
createTime |
Cadeia de caracteres | Quando a instância do gráfico foi criada. |
lastUpdateTime |
Cadeia de caracteres | Quando a instância do gráfico foi atualizada pela última vez. |
lastSnapshotTime |
Cadeia de caracteres | O carimbo de data/hora dos dados mais recentes snapshot. |
lastSnapshotRequestTime |
Cadeia de caracteres | Quando foi pedido o último snapshot. |
instanceStatus |
Cadeia de caracteres | A status atual da instância do gráfico. |
Códigos de status de resposta
| Código de status | Descrição |
|---|---|
| 200 Tudo certo | Lista obtida com êxito. |
Consultar um gráfico
Consultar um gráfico personalizado com a Linguagem de Consulta Graph (GQL). Para obter mais informações sobre a GQL, veja Referência de GQL para Microsoft Sentinel grafo.
Observação
{graphName} refere-se ao name de um gráfico devolvido da operação de lista.
Solicitação
POST https://api.securityplatform.microsoft.com/graphs/graph-instances/{graphName}/query
Content-Type: application/json
Corpo da solicitação
{
"query": "string",
"queryLanguage": "GQL"
}
Propriedades do corpo do pedido
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
query |
Cadeia de caracteres | Sim | A consulta GQL a executar. |
queryLanguage |
Cadeia de caracteres | Sim | A linguagem de consulta. Deve ser GQL. |
responseFormats |
Matriz de string | Não | Controla o formato da resposta da consulta. Aceita um ou ambos os seguintes valores: Table, Graph. A predefinição é se Table não for especificada. |
Formatos de resposta
A responseFormats propriedade controla a estrutura da resposta:
| Formatar | Descrição |
|---|---|
Table |
Devolve dados tabulares não processados (predefinição, se não especificado). |
Graph |
Devolve dados estruturados por grafos com nós e arestas. |
Pode pedir um ou ambos os formatos:
-
["Table"]- Devolve apenas o formato da tabela. -
["Graph"]- Devolve apenas o formato de gráfico. -
["Table", "Graph"]- Devolve ambos os formatos na resposta.
Exemplo: Consulta básica
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"
}
Exemplo: Consulta com ambos os formatos de resposta
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"
}
Resposta de exemplo (ambos os formatos)
{
"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"
}
Códigos de status de resposta
| Código de status | Descrição |
|---|---|
| 200 Tudo certo | A consulta foi executada com êxito. |
| 404 Não Encontrado | A instância de grafo especificada não existe. |
Exemplo de resposta de erro
{
"error": {
"code": "GraphInstanceNotFound",
"message": "Graph Instance CustomGraph1 does not exist.",
"target": null,
"details": []
}
}