Skip to main content

Remote ID Test Data Injection

# 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)
**Tipo:** OAuth2 (`clientCredentials`)
**Scope Necessário:** `rid.inject_test_data`
Acesso concedido para injetar dados de teste em um Provedor de Serviços.

---

## Endpoints

### 1. Criar Teste
`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.

**Parâmetros de Rota:**
* `test_id` (string, obrigatório): O ID do teste. Ex: `2979bd18-7f06-441c-bda6-e82c841c35d6`

**Corpo da Requisição (JSON):**
Requer o schema `CreateTestParameters` (uma lista de voos solicitados `requested_flights`).

**Respostas:**
* `200 OK`: Teste criado com sucesso. Retorna `ChangeTestResponse`.
* `409 Conflict`: O teste já existe.

---

### 2. Deletar Teste
`DELETE /tests/{test_id}/{version}`

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

**Parâmetros de Rota:**
* `test_id` (string, obrigatório): O ID do teste.
* `version` (string, obrigatório): A versão atual do teste.

**Respostas:**
* `200 OK`: Teste deletado com sucesso. Retorna `DeleteTestResponse`.

---

### 3. Consultar Notificações de Usuário
`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.

**Parâmetros de Query:**
* `after` (date-time, obrigatório): Não incluir notificações observadas antes deste horário.
* `before` (date-time, opcional): Não incluir notificações após este horário. Padrão é o momento atual.

**Respostas:**
* `200 OK`: Notificações recuperadas. Retorna `QueryUserNotificationsResponse`.
* `400 Bad Request`: Faltando o parâmetro `after` ou requisição inválida.
* `401 Unauthorized`: Token ausente ou inválido.
* `403 Forbidden`: Escopo do token incorreto.

---

## Schemas Principais (Referência)

Para facilitar a integração, aqui está o formato do payload principal de injeção de dados de voo (`TestFlight`):

```json
{
  "injection_id": "edb7695f-8737-4b9f-91f8-e2afbb333f41",
  "aircraft_type": "string",
  "telemetry": [
    {
      "timestamp": "2024-04-22T16:36:50.52Z",
      "position": {
        "lat": 0,
        "lng": 0,
        "alt": 0
      }
      // ... RIDAircraftState details
    }
  ],
  "details_responses": [
    {
      "effective_after": "2024-04-22T16:36:50.52Z",
      "details": {
        "id": "a3423b-213401-0023"
        // ... RIDFlightDetails
      }
    }
  ]
}