Skip to main content

Flight Planning Automated Testing Interface (v0.7.0)

Esta interface é fornecida por um USS (UAS Service Supplier) que deseja participar de testes automatizados envolvendo tentativas de planejamento de voo. Um cliente (geralmente o uss_qualifier) instrui um usuário virtual a interagir com a interface do USS para planejar, atualizar e fechar planos de voo.

Segurança (Autenticação)

  • Tipo: OAuth2 (Client Credentials)

  • Escopos Necessários:

    • interuss.flight_planning.direct_automated_test: Permite determinar a prontidão do USS para o teste e instruir o administrador a preparar a área de testes.

    • interuss.flight_planning.plan: Permite enviar instruções ao usuário virtual para planejar, modificar ou fechar um plano de voo.

  • Descrição: O token JWT deve ser enviado no header Authorization: Bearer <token>.

Endpoints

1. Consultar Status da Interface

Rota: GET /status

Obtém o status atual desta interface de testes automatizados.

  • Escopo Exigido: interuss.flight_planning.direct_automated_test

  • Respostas Esperadas:

    • 200 OK: Interface disponível. Retorna se está Starting ou Ready.

    • 404 Not Found: A interface de testes não está disponível.

2. Limpar Área (Clear Area)

Rota: POST /clear_area_requests

Solicita que o administrador do USS cancele e remova todos os planos de voo gerenciados por ele que interceptem a área especificada no payload.

  • Escopo Exigido: interuss.flight_planning.direct_automated_test

  • Corpo da Requisição: Requer request_id único e a extensão da área (extent).

  • Respostas Esperadas:

    • 200 OK: Área limpa com sucesso. Retorna ClearAreaResponse (indicando sucesso ou detalhes de falha na limpeza).

3. Criar ou Atualizar Plano de Voo (Upsert)

Rota: PUT /flight_plans/{flight_plan_id}

Simula a intenção de um usuário de enviar um plano de voo novo ou atualizado.

  • Escopo Exigido: interuss.flight_planning.plan

  • Parâmetros de Rota: flight_plan_id (obrigatório) - UUID formato v4. Ex: 03e5572a-f733-49af-bc14-8a18bd53ee39

  • Corpo da Requisição: Requer o objeto UpsertFlightPlanRequest.

  • Respostas Esperadas:

    • 200 OK: Dados processados com sucesso. Retorna UpsertFlightPlanResponse com o status do planejamento (Completed, Rejected, Failed, etc).

    • 409 Conflict: Conflito de request_id duplicado ou outra condição de conflito.

4. Fechar/Deletar Plano de Voo

Rota: DELETE /flight_plans/{flight_plan_id}

Permite que o diretor de testes instrua o USS a remover um plano de voo que não é mais necessário para os testes.

  • Escopo Exigido: interuss.flight_planning.direct_automated_test

  • Parâmetros de Rota: flight_plan_id (obrigatório).

  • Respostas Esperadas:

    • 200 OK: Plano de voo deletado com sucesso. Retorna DeleteFlightPlanResponse.

    • 404 Not Found: Plano de voo não encontrado (já pode ter sido deletado).

5. Consultar Notificações de Usuário

Rota: GET /user_notifications

Retorna a lista de notificações observadas pelo usuário virtual. Devem estar disponíveis para consulta em até 5 segundos após a observação.

  • Escopo Exigido: interuss.flight_planning.plan

  • Parâmetros de Query: * after (obrigatório): Limite inferior de tempo.

    • before (opcional): Limite superior de tempo (padrão é o momento atual).

  • Respostas Esperadas:

    • 200 OK: Notificações recuperadas.

    • 400 Bad Request: Parâmetros de tempo ausentes ou inválidos.

Payload de Exemplo (JSON)

Formato simplificado esperado para a criação/atualização de um plano de voo (PUT /flight_plans/{flight_plan_id}):

JSON
{
  "request_id": "b5a9b837-1234-4a2b-9876-c5096a295a12",
  "execution_style": "IfAllowed",
  "flight_plan": {
    "basic_information": {
      "usage_state": "Planned",
      "description": "Medical supplies delivery operated by Example Drone Company",
      "utm_id": "ae1fa066-6d68-4018-8274-af867966978e",
      "area": [
        {
          "volume": {
            "outline_polygon": {
              "vertices": [
                { "lat": -23.179, "lng": -45.887 },
                { "lat": -23.180, "lng": -45.888 }
              ]
            },
            "altitude_lower": { "value": 0, "reference": "W84", "units": "M" },
            "altitude_upper": { "value": 120, "reference": "W84", "units": "M" }
          },
          "time_start": { "value": "2024-04-22T16:30:00Z", "format": "RFC3339" },
          "time_end": { "value": "2024-04-22T17:30:00Z", "format": "RFC3339" }
        }
      ]
    }
  }
}