Automated Testing Interface (Inter USS)

Rotas que devem ser implementadas pelo provedor para poder realizar os testes automatizados implementados pelo BR-UTM Lab. Para mais detalhes, consultar o repositório: https://github.com/dp-icea/automated_testing_interfaces

Remote ID Test Data Injection (v0.5.1)

Esta interface é fornecida por cada Provedor de Serviço (Service Provider) que deseja ser testado pelo framework de testes automatizados. A suíte de testes chama esta interface para injetar dados de voo no sistema sob teste.

Segurança (Autenticação)

Endpoints

1. Criar Teste

Rota: PUT /tests/{test_id}

Solicita a criação de um ou mais voos lógicos baseados na injeção dos dados fornecidos. O ID de injeção (injection_id) não pode ser modificado pelo provedor.

2. Deletar Teste

Rota: DELETE /tests/{test_id}/{version}

Remove todos os dados de teste associados a este teste do injetor do Provedor de Serviços.

3. Consultar Notificações de Usuário

Rota: GET /user_notifications

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

Payload de Exemplo (JSON)

Formato esperado para o envio das informações do voo:

JSON
{
  "requested_flights": [
    {
      "injection_id": "edb7695f-8737-4b9f-91f8-e2afbb333f41",
      "aircraft_type": "Aeroplane",
      "telemetry": [
        {
          "timestamp": "2024-04-22T16:36:50.52Z",
          "position": {
            "lat": -23.1791,
            "lng": -45.8872,
            "alt": 100.0
          }
        }
      ],
      "details_responses": [
        {
          "effective_after": "2024-04-22T16:36:50.52Z",
          "details": {
            "id": "a3423b-213401-0023"
          }
        }
      ]
    }
  ]
}

Remote ID Display Data Observation (v0.3.0)

Esta interface é fornecida por cada Provedor de Exibição (Display Provider) que deseja ser testado pelo framework de testes automatizados. A suíte de testes chama esta interface para obter as informações atuais do Remote ID sob a perspectiva de um usuário do Provedor de Exibição.

Segurança (Autenticação)

Endpoints

1. Consultar Dados de Exibição (Poll Display Data)

Rota: GET /display_data

Solicita os dados atuais de exibição do Remote ID da mesma forma que seriam visualizados por uma Aplicação de Exibição (Display Application).

2. Obter Detalhes do Voo

Rota: GET /display_data/{id}

Obtém os detalhes de um voo específico que foi previamente identificado através da rota /display_data.

Payloads de Exemplo (JSON)

Exemplo de Resposta para /display_data

Formato esperado retornando voos conhecidos e aglomerados (clusters) onde a posição precisa não é exata:

JSON
{
  "flights": [
    {
      "id": "1e3adb99-acc9-424f-a04e-a0743538849a",
      "aircraft_type": "Aeroplane",
      "current_state": {
        "timestamp": "2024-04-22T16:36:50.52Z",
        "operational_status": "Airborne"
      },
      "most_recent_position": {
        "lat": -23.1791,
        "lng": -45.8872,
        "alt": 100.0
      }
    }
  ],
  "clusters": [
    {
      "corners": [
        { "lat": -23.179, "lng": -45.887 },
        { "lat": -23.180, "lng": -45.888 }
      ],
      "area_sqm": 15000.5,
      "number_of_flights": 3
    }
  ]
}

Exemplo de Resposta para /display_data/{id}

Formato esperado retornando os detalhes do operador e da aeronave:

JSON
{
  "operator": {
    "id": "OP-BR-987654321",
    "location": {
      "lat": -23.1805,
      "lng": -45.8881
    },
    "altitude": {
      "altitude": 550.0,
      "altitude_type": "Takeoff"
    }
  },
  "uas": {
    "id": "UAS-XT-550",
    "eu_classification": "Class0"
  }
}

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)

Endpoints

1. Consultar Status da Interface

Rota: GET /status

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

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.

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.

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.

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.

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" }
        }
      ]
    }
  }
}

Versioning Automated Testing Interface (v0.1.2)

Esta interface é fornecida por um USS (UAS Service Supplier) que deseja fornecer informações sobre a(s) versão(ões) do seu software para destinatários autorizados de maneira automatizada.

Segurança (Autenticação)

Endpoints

1. Consultar Versão do Sistema (System Version)

Rota: GET /versions/{system_identity}

Obtém a versão do sistema solicitado com base em seu identificador de limite (system boundary).

Payload de Exemplo (JSON)

Exemplo de Resposta de Versão (GET /versions/{system_identity})

Formato esperado retornando a identidade do sistema solicitado e sua versão atual (preferencialmente utilizando controle de versão semântico).

JSON
{
  "system_identity": "gov.au.casa.operating_rules.v2_6",
  "system_version": "v2.19.53117-rc8+d3a7521f"
}