Automated Testing Interface (Inter USS)

Rotas que devem ser implementadas pelo provedor para poder realizar os testes automatizados implementados pelo USS Qualifier.

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

Geospatial Map Provider Automated Testing Interface (v0.2.3)

Esta interface é implementada para fornecer ao uss_qualifier (e possivelmente a outros clientes semelhantes) a capacidade de simular um usuário interagindo com o mapa geoespacial do USS (UAS Service Supplier) para avaliar potenciais planos de voo.

A suíte de testes automatizados pode chamar esta interface para carregar dados de teste no USS e, em seguida, realizar consultas virtuais no mapa geoespacial para avaliar o processamento e a interpretação de dados de Geo-Awareness.

Segurança (Autenticação)

Endpoints

1. Consultar Status da Interface

Rota: GET /status

Obtém o status desta interface de testes automatizados.

2. Listar Fontes de Dados Geoespaciais

Rota: GET /geospatial_data_sources

Lista todas as fontes de dados geoespaciais carregadas pelo administrador do USS a pedido do diretor de testes.

3. Importar e Ativar Fonte de Dados

Rota: PUT /geospatial_data_sources/{geospatial_data_source_id}

Instrui o administrador do USS a importar e ativar dados geoespaciais da fonte especificada (como um link HTTPS para um JSON ED-269).

4. Consultar Status de uma Fonte de Dados

Rota: GET /geospatial_data_sources/{geospatial_data_source_id}

Obtém o status de processamento/ativação de uma fonte de dados específica no USS.

5. Desativar Fonte de Dados

Rota: DELETE /geospatial_data_sources/{geospatial_data_source_id}

Instrui o administrador do USS a desativar e excluir a fonte de dados geoespaciais.

6. Consultar Mapa Geoespacial (Queries)

Rota: POST /map/queries

Verifica se uma ou múltiplas características geoespaciais (Geozones/Features) se aplicam a uma posição de interesse para um período de tempo especificado ou condições operacionais (Simulação de clique/consulta no mapa).

Payloads de Exemplo (JSON)

Exemplo de Criação de Fonte de Dados (PUT)

JSON
{
  "https_source": {
    "url": "https://caa.example.com/geozones.json",
    "format": "ED-269"
  }
}

Exemplo de Resposta de Status da Fonte

JSON
{
  "data_source": {
    "id": "32ef0162-30c4-4e56-9ce0-b204155ef93d",
    "status": "Ready"
  }
}

Exemplo de Consulta no Mapa (POST /map/queries)

JSON
{
  "checks": [
    {
      "filter_sets": [
        {
          "position": {
            "location": { "lat": -23.179, "lng": -45.887 },
            "altitude": { "value": 100, "reference": "W84", "units": "M" }
          },
          "operation_rule_set": "Part107",
          "resulting_operational_impact": "BlockOrAdvise",
          "ed269": {
            "u_space_class": "EUROCONTROL"
          }
        }
      ]
    }
  ]
}

Geo-Awareness Automated Test Interfaces (v0.2.2)

Esta interface é implementada por cada USS (UAS Service Supplier) que deseja ser testado pelo framework de testes automatizados. A suíte de testes chama esta interface para carregar dados de teste no sistema do USS sob teste e ler informações de Geo-Awareness (Consciência Geográfica) para avaliar seu processamento e interpretação.

Segurança (Autenticação)

Endpoints

1. Consultar Status da Interface

Rota: GET /status

Obtém o status atual da interface de testes automatizados do USS.

2. Importar e Ativar Fonte de Geozone

Rota: PUT /geozone_sources/{geozone_source_id}

Instrui o USS a importar e ativar dados de Geozone a partir de uma fonte especificada (como um link HTTPS para um JSON).

3. Consultar Status da Fonte de Geozone

Rota: GET /geozone_sources/{geozone_source_id}

Obtém o status de processamento da fonte de Geozone e de seus dados dentro do USS.

4. Desativar Fonte de Geozone

Rota: DELETE /geozone_sources/{geozone_source_id}

Instrui o USS a desativar e excluir a fonte de Geozone e todos os seus dados.

5. Checar Geozones Aplicáveis (Check)

Rota: POST /geozones/check

Verifica se uma ou múltiplas Geozones são aplicáveis a uma posição de interesse, para um período de tempo e condições operacionais especificadas.

Payloads de Exemplo (JSON)

Exemplo de Importação de Fonte (PUT)

JSON
{
  "https_source": {
    "url": "https://caa.example.com/geozones.json",
    "format": "ED-269"
  }
}

Exemplo de Resposta de Status (GET /geozone_sources/...)

JSON
{
  "result": "Ready"
}

Exemplo de Checagem de Geozones (POST /geozones/check)

Formato esperado para simular a validação de uma posição contra o banco de dados de zonas:

JSON
{
  "checks": [
    {
      "filterSets": [
        {
          "position": {
            "uomDimensions": "M",
            "verticalReferenceType": "AGL",
            "height": 120.0,
            "longitude": -45.8872,
            "latitude": -23.1791
          },
          "after": "2024-04-22T16:30:00Z",
          "before": "2024-04-22T18:30:00Z",
          "ed269": {
            "uSpaceClass": "EUROCONTROL",
            "acceptableRestrictions": ["PROHIBITED", "REQ_AUTHORISATION"]
          }
        }
      ]
    }
  ]
}