# [Remote ID] Onboarding Service Provider No contexto do serviço de Network RemoteID, um Service Provider é um provedor USS que é capaz de receber dos seus drones os dados de localização em tempo real, e disponibilizar esses dados on demand em uma API também em tempo real. A especificação a ser seguida está definida pela ASTM F3411-22a. Ainda não foi definido a obrigatoriedade do item 4.4 "*Broadcast Remote ID".* Portanto, nessa página apenas será definido o uso dos itens 4.5 em diante. ### Pré-requisitos técnicos Para um USS se tornar um provedor de Tracking existem os seguintes pré-requisitos técnicos que não estão no escopo dessa documentação, ficando a critério do provedor como implementar esses pré-requisitos: 1. Possuir um servidor HTTP para solicitar e receber as requisições listadas abaixo 2. Possuir infraestrutura para obter os dados de posição instantânea do drone. Esses dados devem estar disponíveis em tempo real no servidor HTTP ### Fluxograma
### Endpoints A dinâmica de comunicação entre Service Provider, Display Provider e DSS está descrita na norma ASTM 3411-22a. Para facilitar o entendimento, alguns possíveis cenários de utilização estão descritos na página [Cenários](https://servicos2.decea.mil.br/br-utm/wiki/books/documentacao-tecnica/page/cenarios "Cenários"). O padrão seguido no ensaio será o descrito em [https://github.com/dp-icea/Protocols/tree/main/remoteid](https://github.com/dp-icea/Protocols/tree/main/remoteid) Conforme o padrão OpenAPI acima, os endpoints que o Service Provider precisará prover ---
**GET**/uss/flights
Endpoint onde os Display Providers obterão os dados de tracking das aeronaves sob responsabilidade do Service Provider em uma determinada área
Query Parameters
viewÁrea da solicitação, representada por dois pontos no formato `lat1,lng1,lat2,lng2`. Os pontos são as extremidades da diagonal de um quadrado, onde esse quadrado representa a área da solicitação29.978,31.132,29.980,31.135
recent\_positions\_durationSe for maior que zero, indica que a requisição deve enviar todas as posições do drone nos últimos N segundos. Valor máximo: 60. Se for zero, indica que deve ser enviado apenas a última posição do drone 60
Response ```json { "timestamp": { "value": "1985-04-12T23:20:50.52Z", "format": "RFC3339" }, "flights": [ { "id": "PR-333334433.0dfe0e82-fd7a-44d9-af17-7fdd42751b45", "aircraft_type": "Helicopter", "current_state": RIDAircraftState, "operating_area": OperatingArea, "simulated": false, "recent_positions" = [ RIDRecentAircraftPosition ] } ], "no_isas_present": false } ```
timestampHorário em que o Service Provider recebeu a requisição
flights.idID único do provedor que identifica um voo em particular. Deverá vir no formato: "UAS\_ID.FLIGHT\_ID", onde UAS\_ID é código SISANT da aeronave, e FLIGHT\_ID é o uuid da solicitação do voo realizada no ECO-UTM.
flights.aircraft\_typeTipo de aeronave no padrão ICAO. Para drones, o tipo = Helicopter. Para drones de asa fixa que conseguem decolar verticalmente, o tipo = "HybridLift"
flights.current\_stateDados do tracking de fato da aeronave, no momento atual.
flights.operating\_areaA área que a aeronave se encontra. Deve ser usado apenas quando o campo "flights.current\_state" não está preenchido.
flights.recent\_positionsLista de posições recentes da aeronave. Deve ser informado apenas quando as "recent\_positions" foram requisitadas.
no\_isas\_presentIndica se o provedor não possui nenhuma ISA na região informada. Caso esse valor retorne verdadeiro, o requisitante deve parar de realizar requisições para a área.
---
**GET**/uss/flights/{id}/details
Endpoint onde os Display Providers obterão dados específicos de um determinado voo
Path Parameters
idID único do provedor para identificar o voob41f2785-1182-4c2e-82d5-f72f754b3fe2.0dfe0e82-fd7a-44d9-af17-7fdd42751b45
Response ```json { "details": { "id": "b41f2785-1182-4c2e-82d5-f72f754b3fe2.0dfe0e82-fd7a-44d9-af17-7fdd42751b45", }, "uas_id": { "registration_id": "PR-333334433", }, "operator_id": "HUKMBB", "operator_location": { "position": { "lng": -118.456, "lat": 34.123 }, "altitude": { "value": 19.5, "reference": "W84", "units": "M" }, "altitude_type": "Takeoff" }, "operation_description": "Descrição do voo, mesma descrição informada no SARPAS" } } ```
uas\_idCódigo SISANT da aeronave
operator\_idCódigo SARPAS do operador
operator\_locationLocalização do operador. Opcional
operation\_descriptionDescrição da Operação conforme solicitação no SARPAS
---
**GET**/uss/identification\_service\_areas/{id}
Endpoint para obter o volume 4D de uma ISA controlada pelo Service Provider
Path Parameters
idUUID da área possuída pelo provedorUUID
Response ```json { "extents": { "volume": { "outline_circle": { "center": { "lng": -118.456, "lat": 34.123 }, "radius": { "value": 300.183, "units": "M" } }, "outline_polygon": { "vertices": [ { "lng": -118.456, "lat": 34.123 }, { "lng": -118.456, "lat": 34.123 }, { "lng": -118.456, "lat": 34.123 } ] }, "altitude_lower": { "value": 19.5, "reference": "W84", "units": "M" }, "altitude_upper": { "value": 19.5, "reference": "W84", "units": "M" } }, "time_start": { "value": "1985-04-12T23:20:50.52Z", "format": "RFC3339" }, "time_end": { "value": "1985-04-12T23:20:50.52Z", "format": "RFC3339" } } } ```
volumeVolume 4D da área específica
### Interação com DSS O Service Provider, conforme definido no padrão ASTM3411-22a, deve criar entidades de área 4D denominadas Identification Service Area (ISA), onde este proverá o serviço de tracking. Os endpoints expostos pelo DSS estão descritos no arquivo OpenAPI descrito acima. --- Como exemplo, o endpoint abaixo é onde o Service Provider realizará a criação da ISA no DSS:
**PUT**/dss/identification\_service\_area/{id}
Endpoint exposto pelo DSS onde o Service Provider realizará a criação da ISA. Essa área deve ser idêntica à area solicitada e aprovada no Sarpas
Path Param
idUUID da ISA. Deve ser o mesmo UUID devolvido pelo ECO-UTM após a criação da solicitação de voo.
Body ```json { "extents": { "volume": { "outline_circle": { "center": { "lng": -118.456, "lat": 34.123 }, "radius": { "value": 300.183, "units": "M" } }, "outline_polygon": { "vertices": [ { "lng": -118.456, "lat": 34.123 }, { "lng": -118.456, "lat": 34.123 }, { "lng": -118.456, "lat": 34.123 } ] }, "altitude_lower": { "value": 19.5, "reference": "W84", "units": "M" }, "altitude_upper": { "value": 19.5, "reference": "W84", "units": "M" } }, "time_start": { "value": "1985-04-12T23:20:50.52Z", "format": "RFC3339" }, "time_end": { "value": "1985-04-12T23:20:50.52Z", "format": "RFC3339" } }, "uss_base_url": "https://example.com/rid" } ``` Campos notáveis
volumePolígono **OU** círculo da área, idêntico ao definido no SARPAS
altitude\_lower, altitude\_upperAltitude geodésica (WSG84, W84) máxima e mínima em metros.
time\_start, time\_endHorário de início e fim da área. Todos os horários devem estar no timezone Zulo (UTC+0). O único formato suportado é "RFC3339"
uss\_base\_urlURL a qual o Service Provider irá responder à solicitações. Não deve conter uma barra '/' ao final. Sugere-se utilizar uma URL e não um IP.
Response ```json { "subscribers": [], "service_area": { "uss_base_url": "https://example.com/rid", "owner": "myuss", "time_start": { "value": "1985-04-12T23:20:50.52Z", "format": "RFC3339" }, "time_end": { "value": "1985-04-12T23:20:50.52Z", "format": "RFC3339" }, "version": "string", "id": "string" } } ``` Campos notáveis
subcribersLista dos atuais subcribers dessa área. Caso a lista não esteja vazia, é **OBRIGATÓRIO** o envio da ISA para cada um dos subscribers listados
versionVersão da ISA, gerado pelo DSS, para garantia de integridade. É necessário utilizar esse campo para atualizar ou deletar uma ISA.