Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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.
Pedido
GET https://api.securityplatform.microsoft.com/graphs/graph-instances?graphTypes=Custom
Não é necessário nenhum corpo do pedido.
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 da resposta
| Propriedade | Tipo | Descrição |
|---|---|---|
name |
Cadeia | O nome da instância do gráfico. |
mapFileName |
Cadeia | O nome do ficheiro de mapa associado ao gráfico. |
mapFileVersion |
Cadeia | A versão do ficheiro de mapa. |
graphDefinitionName |
Cadeia | O nome da definição de gráfico utilizada para criar esta instância. |
graphDefinitionVersion |
Cadeia | A versão da definição do gráfico. |
refreshFrequency |
Cadeia | Com que frequência os dados do grafo são atualizados. |
createTime |
Cadeia | Quando a instância do gráfico foi criada. |
lastUpdateTime |
Cadeia | Quando a instância do gráfico foi atualizada pela última vez. |
lastSnapshotTime |
Cadeia | O carimbo de data/hora do instantâneo de dados mais recente. |
lastSnapshotRequestTime |
Cadeia | Quando o último instantâneo foi pedido. |
instanceStatus |
Cadeia | O estado atual da instância do gráfico. |
Códigos de estado de resposta
| Código de estado | Descrição |
|---|---|
| 200 OK | 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.
Nota
{graphName} refere-se ao name de um gráfico devolvido da operação de lista.
Pedido
POST https://api.securityplatform.microsoft.com/graphs/graph-instances/{graphName}/query
Content-Type: application/json
Corpo do pedido
{
"query": "string",
"queryLanguage": "GQL"
}
Propriedades do corpo do pedido
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
query |
Cadeia | Sim | A consulta GQL a executar. |
queryLanguage |
Cadeia | Sim | A linguagem de consulta. Tem de ser GQL. |
responseFormats |
Matriz de cadeia | 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 estado de resposta
| Código de estado | Descrição |
|---|---|
| 200 OK | 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": []
}
}