API de eventos

2026-10-16

Introdução de novo recurso:

O EventAPI é o serviço de notificações ativas do FlightHub Sync para enviar eventos comerciais em tempo real para plataformas de terceiros. Ao usar o EventAPI, observe o seguinte:

    • Os usuários precisam verificar o campo x-dji-signature no cabeçalho do serviço recebido. A assinatura é calculada usando HMAC-SHA256 com base no token da organização, que é usado para verificar a validade da origem da solicitação.
  • Os usuários podem configurar regras de notificação, selecionar os tipos de eventos aos quais desejam se inscrever e especificar a assinatura de dados para todos os projetos ou para projetos específicos.
  • O endpoint de recebimento suporta os protocolos HTTP e HTTPS.
  • O FlightHub 2 enviará as notificações de eventos usando um endereço IP fixo. Servidores em diferentes regiões utilizam endereços IP diferentes. Para a versão local do FlightHub, o endereço IP específico depende do seu servidor.
País/RegiãoIP
Servidor da UE + servidor global18.198.174.64
3.64.50.113
3.71.214.14
63.177.169.61
52.3.45.199
52.55.215.248
52.73.49.179
34.237.190.206
34.237.182.49
34.228.131.169

Configuração de regra de notificação

Gerenciamento de regras

A lista de regras exibe as seguintes informações:

  • Nome da regra: Definido pelo usuário, com até 60 caracteres
  • Endereço de envio: URL do endpoint (HTTP/HTTPS)
  • Escopo de dados: Todos os projetos ou projetos específicos
  • Eventos assinados: Lista de tipos de eventos selecionados
  • Status: Ativado/Desativado
  • Ações: Editar, Excluir

Configuração do escopo de dados

  • Todos os projetos: Inclui automaticamente todos os projetos futuros.
  • Projetos especificados: Cada projeto só pode ser referenciado por uma regra personalizada (excluindo as regras de “Todos os projetos”). Os projetos já referenciados ficarão esmaecidos.

Observação: Se já existir uma regra de “Todos os projetos” na organização, criar uma nova regra para um projeto específico acionará um alerta de envio de eventos duplicados.

Auditoria de registros de entrega

O EventAPI fornece estatísticas de logs de entrega de 7 dias, incluindo:

  • Taxa de sucesso: Exibida como uma porcentagem; um callback 200 é considerado bem-sucedido.
  • Total de eventos: Número de eventos gerados nos últimos 7 dias
  • Número de falhas: Número total de entregas com falha em 7 dias

Os registros dos últimos 7 dias podem ser baixados em formato CSV. Somente os dados deste período são mantidos.

Tipos de eventos de push

Notificação de sincronização de arquivos

{
  "id": "e3b0c442-73fc-1c14-9afb-f17e2fa6826a", // Identificador universalmente único (UUID) da mensagem de evento
  "type": "file_sync_success", // Tipo de evento: notificação de arquivo sincronizado
  "created_at": 1767875288, // Carimbo de data/hora do envio do evento (segundos)
  "data": {
    "task_id": "sync_task_10001", // Identificador universalmente único da tarefa de sincronização
    "organization_id": "org_123456_xxxxxx", // ID da organização
    "project_id": "proj_789012_xxxxxx", // ID do projeto do arquivo
    "file_id": "file_345678_xxxxxx", // ID do arquivo dentro do FlightHub
    "file_type": "application/pdf", // Tipo de arquivo (rota de waypoint, registro de voo, modelo ou arquivo de mídia)
    "file_external_key": "customer_storage/2026/01/report_09.pdf", // Chave de objeto (caminho de armazenamento) do arquivo no bucket de armazenamento de terceiros
    "file_bytes_size": 1048576, // Tamanho do arquivo (bytes)
    "fh2_file_path": "/project_docs/report/report_09.pdf", // Caminho lógico original do arquivo no DJI FlightHub 2
   }
}

Obter lista de alertas de IA e captura de tela

{
  "id": "e3b0c442-98fc-1c14-9afb-f17e2fa6826a" , // UUID da mensagem de evento
  "type": "ai_alert_record", // Tipo de evento: registros de detecção de IA
  "created_at": 1767875288, // Carimbo de data/hora do envio do evento (segundos)
  "data": {
    "alert_uuid": "e3b0c442-98fc-1c14-9afb-f17e2fa6826a", // UUID dos registros de alerta
    "algorithm_source": 100002, // // ID da fonte do algoritmo. Os valores de enumeração são os seguintes:
                                   // 0: Algoritmo inteligente oficial da DJI
                                   // 1: Detecção por luz visível da DJI de pessoas, veículos e embarcações
                                   // 2: Detecção por infravermelho da DJI de pessoas, veículos e embarcações
                                   // 3: Detecção de temperatura por infravermelho da DJI
                                   // 255: Algoritmos de terceiros AI-inside na aeronave
                                   // 100001: Algoritmos de terceiros em nuvem AI-LINK
                                   // 100002: Detecção multimodal de objetos da DJI
    "drone_sn": "1581F6XXXXXX00A6XXXX", // Número de série da aeronave executando a tarefa
    "file_id": 123456, // ID do arquivo de mídia original associado
    "file_url": "https://file-storage.djicdn.com/example/path/image.jpg?auth_key=xxxx", // Link de download da imagem original (contém parâmetros de autenticação)
    "flight_id": "f17e2fa6-826a-48c5-a89a-fffe4093xxxx", // ID de voo associado
    "gateway_sn": "6QCDL8XXXXXX02XXXX", // SN do dispositivo dock/gateway associado
    "interval_seconds": 0, // Intervalo ou duração do alerta (segundos). Padrão é 0 para algoritmos não-nuvem
    "labels": [
      "lights"// Rótulo/tipo do sujeito detectado
    ],
    "location": {
      "altitude": 80.5, // A altitude quando o alerta ocorreu (metros)
      "latitude": 22.123456, // A latitude quando o alerta ocorreu. Para algoritmos embarcados, esta é a coordenada GPS do centro do campo de visão da câmera quando o alerta ocorreu. Para algoritmos em nuvem, esta é a posição da aeronave.
      "longitude": 113.123456, // A longitude quando o alerta ocorreu. Para algoritmos embarcados, esta é a coordenada GPS do centro do campo de visão da câmera quando o alerta ocorreu. Para algoritmos em nuvem, esta é a posição da aeronave.
    },
    "project_id": "fe2400a5-5a74-4cb5-8374-548b7eaxxxxx", // UUID do projeto afiliado
    "task_name": "FlyToTask_Inspect_ZoneA", // Nome da tarefa de voo associada
    "thumbnail_url": "https://oss-cn-hangzhou.aliyuncs.com/example/thumbnail.jpeg?Expires=1767961676&Signature=xxxx", // Link de download da miniatura (inclui assinatura e data de expiração)
    "timestamp": 1767875275677, // O carimbo de data/hora quando a detecção de IA ocorreu (milissegundos)
  }
}

Notificação de progresso de execução do fluxo de trabalho acionado

Usada para enviar o progresso de execução de nós do fluxo de despacho automático (fluxo de resposta a incidentes), permitindo que sistemas de terceiros sincronizem em tempo real o status das tarefas, estados terminais e marcações de alarme falso.

{
  "event_type": "alert_workflow_progress",         // Tipo de evento: progresso de execução do fluxo de trabalho acionado
  "event_id": "e3b0c442-73fc-1c14-9afb-f17e2fa6826a", // ID único da mensagem de evento (UUID)
  "org_id": "org_123456_xxxxxx",                   // ID da organização à qual este evento pertence
  "project_id": "proj_789012_xxxxxx",              // ID do projeto ao qual este evento pertence (opcional)
  "created_at": 1767875288,                        // Carimbo de data/hora do envio do evento (segundos)
  "data": {
    "incident_id": "incident_2026062900001",       // ID do evento de alerta
    "workflow_uuid": "wf_uuid_xxxxxxxxxxxx",       // UUID do fluxo de trabalho
    "drone_sn": "1581F5BKD2380030XXXXX",           // Número de série da aeronave operacional
    "node_type": "command_task",                   // Tipo de nó: command_task (tarefa FlyTo) / device_actions (ações do dispositivo)
    "status": 1,                                   // Código de status do nó atual, depende de node_type; enumerações abaixo:
                                                   // node_type = "command_task" (nó de tarefa FlyTo):
                                                   //   0: Pendente              (não terminal)
                                                   //   1: Em execução           (não terminal)
                                                   //   2: Bem-sucedido          (terminal)
                                                   //   3: Intervenção manual    (terminal)
                                                   //   4: Falha na execução     (terminal)
                                                   // node_type = "device_actions" (nó de ação do dispositivo):
                                                   //   0: Bem-sucedido          (terminal)
                                                   //   1: Parcialmente bem-sucedido (terminal)
                                                   //   2: Falhou                (terminal)
                                                   //   3: Em andamento          (não terminal)
                                                   //   4: Intervenção manual    (terminal)
    "is_false_alarm": false,                       // Se marcado como alarme falso (valor real só é retornado em estado terminal; não terminal é fixo em false)
    "flight_id": "task_uuid_xxxxxxxxxxxx"          // UUID da execution_task atual
  }
}

Notificação de envio de arquivo de mídia

{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "type": "media_file_uploaded",
  "created_at": 1767875288,
  "data": {
    "organization_id": "org_123456_xxxxxx",
    "project_id": "proj_789012_xxxxxx",
    "file_id": "file_345678_xxxxxx",
    "file_name": "DJI_20260108_120000_0001.JPG",
    "file_type": "image/jpeg",
    "file_size": 10485760,
    "device_sn": "1581F6XXXXXX00A6XXXX",
    "flight_id": "f17e2fa6-826a-48c5-a89a-fffe4093xxxx"
  }
}

Notificação sobre envio e atualização de arquivo de rota de voo

{
  "type": "wayline_file_uploaded",
  "org_id": "1024dd05-34ce-46b6-a872-cb32b8c98f64",
  "project_id": "38535b47-b972-4663-b1ce-5bd5a29224a4",
  "created_at": 1769414678,
  "data": {
    "id": "testcda7-c97d-4bf6-8f8f-b490b9b18401", // ID da rota de voo
    "name": "New waypoint route (2)",           // Nome da rota de voo
    "object_key": "1testd05-34ce-46b6-a872-cb32b8c98f64/test9b47-b972-4663-b1ce-5bd5test24a4/e5testb3-2cf8-49af-b49b-64test0032c7/New waypoint route (2).kmz", // Chave de armazenamento de objeto da rota de voo
    "type": 5 // Tipo de arquivo. 5 indica a rota de voo
  }
}

Notificação de conclusão da reconstrução do modelo

{
  "type": "model_post_reconstruction",
  "org_id": "105ddd05-34ce-46b6-a872-cb32b8c98f64",
  "project_id": "38559b47-b972-4663-b1ce-5bd5a29224a4",
  "created_at": 1769414678,
  "data": {
    "id": "2e12cda7-c97d-4bf6-8f8f-btest9b18401", // ID do modelo
    "name": "xx Model",                      // Nome do modelo
    "object_key": "105ddd05-34ce-46b6-a872-cb32b8c98f64/38559b47-b972-4663-b1ce-5bd5a29224a4/etestbb3-2cf8-49af-b49b-64b1610032c7/Model", // Chave de armazenamento de objeto do modelo
    "type": 8//8: Modelo 2D, 9: Modelo 3D
  }
}

Notificação sobre saída anormal de RTH

{
  "id": "9ab96be1-0231-4b2c-9892-2221188c323b",
  "type": "device_exit_return_home",
  "created_at": 1769400986,
  "data": {
    "action": 1,
    "event_type": "device_exit_return_home",
    "notify_type": "device_exit_return_home",
    "organization_uuid": "8test46f-2cd5-476b-9f33-415c98de11a5",
    "project_uuid": "8test9a5-d2ba-423d-a03e-e3b323c40810",
    "reason": null, // Motivo da saída anormal de RTH: "2": "Falha na inicialização da árvore de comportamento"; "3": "Cercado por obstáculos"; "4": "Restrição de voo acionada"; "5": "Obstáculo muito próximo"; "6": "Sem sinal GPS"; "7": "Flags de saída de posição GPS e VIO são falsos"; "8": "Grande erro de posição entre a fusão GPS e VIO"
    "sn": "158TESTGD24BK0010114" // SN da aeronave que sofre a saída anormal de RTH
  }
}

Notificação de adição/edição de anotação da organização

{
  "created_at": 1772803375,
  "data": {
    "count": 1,
    "download_url": "/openapi/v0.1/map/data-sync/files/33711783-bf96-440d-baa2-0e71afa1d485/f7356cd3-53de-4318-955f-306cbcc60ca2/0",
    "format": "kml-gz",
    "geometry_types": [
      "polygon"
    ],
    "sync_id": "annotation-f7356cd3-53de-4318-955f-306cbcc60ca2",
    "sync_type": 0
  },
  "id": "5df19eca-65cf-4975-a942-09fdcfd7bdf9",
  "org_id": "105ddd05-34ce-46b6-a872-cb32b8c98f64",
  "project_id": "33711783-bf96-440d-baa2-0e71afa1d485",
  "type": "map_geo_elements_update"
}

Atualização de endereço RTSP push

{
  "converter_name": "Example Converter",
  "converter_id": "29f4f54b-93af-4fd3-aed6-bd3d768082e9",
  "sn": "SN1234567890",
  "camera_index": "89-0-0",
  "device_callsign": "DRONE-01",
  "url": "rtsp://192.168.1.10:554/live/stream",
  "username": "rtsp_user",
  "password": "rtsp_password"
}

API de Mapeamento do FlightHub - Progresso da reconstrução de modelo

{
    "msg_type": "model_reconstruction_percent_change", // Tipo de mensagem, model_reconstruction_percent_change=Reconstrução de modelo, model_zip_change=Compressão de modelo
    "resource_uuid": "7417bac3-00a4-4e07-b078-233c77e3fdf9",
    "model_uuid": "3d33643c-de0d-4070-b155-8cf791e662e2",
    "model_status": 14, // Status de reconstrução, 9=Compressão de modelo, 12=Aguardando recursos, 13=Falha ao obter recursos, 14=Reconstrução em andamento, 15=Reconstrução bem-sucedida, 16=Reconstrução cancelada
    "model_size": 37353992,
    "reconstruction_progress": 100, // Progresso da reconstrução, 0-100
    "error_code": 0, // Código de erro de reconstrução
    "zip_status": 2, // Status de compressão, 1=Compressão em andamento, 2=Compressão concluída, 3=Falha na compressão
    "zip_progress": 100, // Progresso da compressão 0-100
    "zip_file_key": "https://test-file-storage.djicdn.com/5a6f9d4b-2a38-4b4b-86f9-3a678da0bf4a/open_reconstruction/7417bac3-00a4-4e07-b078-233c77e3fdf9/3D/3d33643c-de0d-4070-b155-8cf791e662e2.zip?auth_key=1767942603-0-0-150d3c28868e91dd2446aef97c26de85", // Endereço de download do arquivo de saída comprimido
}

Last Updated: