# Documentação Técnica

# I WorkShop BR-UTM (Jul/24)

Documentação para participação no WorkShop

# Repositórios e Endpoints

[Apresentação Workshop](https://docs.google.com/presentation/d/17UNKi6QQ_hO4Lv314aAa8VlsqurcgUyg/edit?usp=sharing&ouid=115891639852919271691&rtpof=true&sd=true)

DSS: [https://github.com/dp-icea/dss](https://github.com/dp-icea/dss)

Monitoring: [https://github.com/dp-icea/utm\_monitoring](https://github.com/dp-icea/utm_monitoring)

SCD-Provider Example: [https://github.com/dp-icea/scd\_provider/tree/refactor-golang](https://github.com/dp-icea/scd_provider/tree/refactor-golang)

Swagger: [http://172.18.31.95:9001/](http://172.18.31.95:9001/)

### Endpoints

Validator: [http://montreal.icea.decea.mil.br:64235/verifier/validate](http://montreal.icea.decea.mil.br:64235/verifier/validate)

# Entidades da Simulação

A seguir estão as coordenadas GeoJSON das entidades presentes no cenário de simulação

Visualizador: [http://172.18.35.75:3000/](http://172.18.35.75:3000/)

##### SBR497

<details id="bkmrk-sbr-497-json-%7B-%22type"><summary>GeoJSON</summary>

```json
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": 0,
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -48.1622,
              -22.2156
            ],
            [
              -48.1403,
              -22.2004
            ],
            [
              -48.1183,
              -22.1853
            ],
            [
              -48.0963,
              -22.1702
            ],
            [
              -48.0744,
              -22.155
            ],
            [
              -48.0524,
              -22.1399
            ],
            [
              -48.0305,
              -22.1248
            ],
            [
              -48.0086,
              -22.1096
            ],
            [
              -47.9866,
              -22.0945
            ],
            [
              -47.9647,
              -22.0793
            ],
            [
              -47.9428,
              -22.0642
            ],
            [
              -47.9411,
              -22.0504
            ],
            [
              -47.9394,
              -22.0366
            ],
            [
              -47.9378,
              -22.0228
            ],
            [
              -47.9241,
              -22.0294
            ],
            [
              -47.9104,
              -22.0361
            ],
            [
              -47.8967,
              -22.0428
            ],
            [
              -47.9036,
              -22.0588
            ],
            [
              -47.9106,
              -22.0748
            ],
            [
              -47.9176,
              -22.0908
            ],
            [
              -47.9246,
              -22.1068
            ],
            [
              -47.9316,
              -22.1228
            ],
            [
              -47.9385,
              -22.1388
            ],
            [
              -47.9455,
              -22.1548
            ],
            [
              -47.9525,
              -22.1708
            ],
            [
              -47.9549,
              -22.1881
            ],
            [
              -47.9574,
              -22.2054
            ],
            [
              -47.9598,
              -22.2228
            ],
            [
              -47.9623,
              -22.2401
            ],
            [
              -47.9647,
              -22.2574
            ],
            [
              -47.9672,
              -22.2747
            ],
            [
              -47.9696,
              -22.292
            ],
            [
              -47.9721,
              -22.3093
            ],
            [
              -47.9745,
              -22.3266
            ],
            [
              -47.9769,
              -22.3439
            ],
            [
              -47.9955,
              -22.3311
            ],
            [
              -48.014,
              -22.3182
            ],
            [
              -48.0326,
              -22.3054
            ],
            [
              -48.0511,
              -22.2926
            ],
            [
              -48.0696,
              -22.2797
            ],
            [
              -48.0882,
              -22.2669
            ],
            [
              -48.1067,
              -22.2541
            ],
            [
              -48.1252,
              -22.2412
            ],
            [
              -48.1437,
              -22.2284
            ],
            [
              -48.1622,
              -22.2156
            ]
          ]
        ]
      },
      "geometry_name": "geom",
      "properties": {
        "id": "SBR497",
        "feattype": "eac_r"
      }
    }
  ]
}
```

</details><details id="bkmrk-vizualiza%C3%A7%C3%A3o-%C2%A0"><summary>Vizualização</summary>

 [![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/scaled-1680-/image.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/image.png)

</details>##### OIR USS ICEA

<details id="bkmrk-geojson-%7B%C2%A0-%22type%22%3A-%22"><summary>GeoJSON</summary>

{  
 "type": "FeatureCollection",  
 "features": \[  
 {  
 "type": "Feature",  
 "properties": {},  
 "geometry": {  
 "coordinates": \[  
 \[  
 \[  
 -48.04294926032304,  
 -22.29007270340638  
 \],  
 \[  
 -47.97913316615177,  
 -22.33798336379246  
 \],  
 \[  
 -47.97534728820932,  
 -22.27599508625559  
 \],  
 \[  
 -48.04294926032304,  
 -22.29007270340638  
 \]  
 \]  
 \],  
 "type": "Polygon"  
 }  
 }  
 \]  
}

</details><details id="bkmrk-visualiza%C3%A7%C3%A3o"><summary>Visualização</summary>

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/scaled-1680-/lROimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/lROimage.png)

</details>##### Restrição

<details id="bkmrk-geojson-%7B%C2%A0-%22type%22%3A-%22-1"><summary>GeoJSON</summary>

{  
 "type": "FeatureCollection",  
 "features": \[  
 {  
 "type": "Feature",  
 "properties": {},  
 "geometry": {  
 "coordinates": \[  
 \[  
 \[  
 -48.15454075371537,  
 -22.21502857838594  
 \],  
 \[  
 -48.07855594639369,  
 -22.26593911208886  
 \],  
 \[  
 -48.07126578841704,  
 -22.15692404482543  
 \],  
 \[  
 -48.15454075371537,  
 -22.21502857838594  
 \]  
 \]  
 \],  
 "type": "Polygon"  
 }  
 }  
 \]  
}

</details><details id="bkmrk-visualiza%C3%A7%C3%A3o-1"><summary>Visualização</summary>

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/scaled-1680-/WOpimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/WOpimage.png)

</details>

# [Desconflito][Autenticação] Roteiro Etapa 1

### Criação de OIR

Uma *Operational Intent Reference(OIR)* é a representação 4D da intenção de operação de uma aeronave não tripulada. No ambiente UTM, a criação e edição de OIRs deve ser coordenada com os outros provedores presentes ou interessados na região da operação. Para possibilitar que essa coordenação seja feita programaticamente, o DECEA manterá um serviço de Descoberta, que é um local onde provedores podem declarar suas operações, assim como obter as operações de outros provedores numa área específica.

Nesse workshop, iremos aprender a interagir com esse serviço de descoberta, chamado DSS. O DSS provido pelo DECEA é derivado da implementação feita pelo projeto [InterUSS](https://interussplatform.org/), que por sua vez é uma implementação dos padrões ASTM-3411 e ASTM-3548. A comunicação com o DSS é feita via HTTP e os contratos estão definidos em: [https://github.com/dp-icea/Protocols](https://github.com/dp-icea/Protocols)

A complexidade na criação da OIR depende de quantas outras entidades (Constraints ou outras OIRs) estão presentes no mesmo volume 4D. Nesse workshop, iniciaremos com o cenário mais simples, evoluindo até o cenário mais complexo.

<details id="bkmrk-oir-isolada-%C2%A0"><summary>OIR isolada</summary>

<div drawio-diagram="456"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-06/drawing-3-1719771300.png" alt=""/></div>

</details><details id="bkmrk-oir-pr%C3%B3xima-a-constr"><summary>OIR próxima a Constraint</summary>

<div drawio-diagram="460"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-06/drawing-3-1719772649.png" alt=""/></div>

</details><details id="bkmrk-oir-com-conflito-mai"><summary>OIR com conflito</summary>

**Maior ou igual prioridade**

<div drawio-diagram="465"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-06/drawing-3-1719773244.png" alt=""/></div>

**Menor prioridade**

<div drawio-diagram="464"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-06/drawing-3-1719773229.png" alt=""/></div>

</details><details id="bkmrk-endpoints-de-coorden"><summary>Endpoints de coordenação</summary>

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/scaled-1680-/7QUimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/7QUimage.png)

</details><details id="bkmrk-ativa%C3%A7%C3%A3o-de-oir-%28mom"><summary>Ativação de OIR (Momentos antes do voo)</summary>

Atualizar a OIR no DSS e notificar os Subscribers

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/scaled-1680-/mIlimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/mIlimage.png)

</details>#### Autenticação

<details id="bkmrk-autenticar-se-%C2%A0"><summary>Autenticar-se</summary>

A URL base é [`http://montreal.icea.decea.mil.br:64235/token`](http://montreal.icea.decea.mil.br:64235/token)

A requisição deve conter as seguintes *query\_strings*

<table border="1" style="border-collapse: collapse; width: 99.9786%; height: 106.033px;"><colgroup><col style="width: 50.0471%;"></col><col style="width: 50.0471%;"></col></colgroup><tbody><tr style="height: 46.5167px;"><td style="height: 46.5167px;">intended\_audience</td><td style="height: 46.5167px;"><span style="color: rgb(0, 0, 0);">USS de destino da mensagem (Domínio do provedor) Ex. "utm.decea.mil.br"</span></td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">scope</td><td style="height: 29.8px;"><span style="color: rgb(0, 0, 0);">escopo da requisição. Ex.: utm.strategic\_coordination.</span>

<span style="color: rgb(0, 0, 0);">O scope esperado de cada endpoint está definido no OpenAPI  
</span>

</td></tr><tr style="height: 29.7167px;"><td style="height: 29.7167px;">apikey</td><td style="height: 29.7167px;"><span style="color: rgb(0, 0, 0);">chave recebida do ICEA. Pode-se optar em enviar esse campo no Header da requisição  
</span></td></tr></tbody></table>

</details><details id="bkmrk-validar-autentica%C3%A7%C3%A3o"><summary>Validar autenticação de outro USS</summary>

Ao receber uma requisição de outro USS em seu servidor, é necessário validar o token de autenticação fornecido pelo outro USS. O payload do token contém as seguintes informações:

<table border="1" style="border-collapse: collapse; width: 99.9786%; height: 266.517px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 46.5167px;"><td style="height: 46.5167px;">aud  
</td><td style="height: 46.5167px;">Domínio do seu provedor.</td><td style="height: 46.5167px;">"utm.provider1.com"  
</td></tr><tr style="height: 63.4px;"><td style="height: 63.4px;">exp  
</td><td style="height: 63.4px;">Timestamp epoch do horário de expiração do token. O token não deve ser aceito a partir desse horário  
</td><td style="height: 63.4px;">1719777868</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">iss  
</td><td style="height: 29.8px;">Nome do provedor emissor do token  
</td><td style="height: 29.8px;">ICEA  
</td></tr><tr style="height: 80.2px;"><td style="height: 80.2px;">scope  
</td><td style="height: 80.2px;">Scope autorizado pelo token. Cada endpoint deve aceitar apenas determinados scopes, conforme definido no OpenAPI  
</td><td style="height: 80.2px;">utm.strategic\_coordination  
</td></tr><tr style="height: 46.6px;"><td style="height: 46.6px;">sub  
</td><td style="height: 46.6px;">Nome do provedor origem da requisição. Não deve ser validado</td><td style="height: 46.6px;">"USS1"</td></tr></tbody></table>

Os passos para verificação são

1. Verificar assinatura do token 
    1. Deve-se validar a assinatura do token utilizando a chave pública do ICEA, que será fornecida durante o workshop.
2. Verificar a validade do token 
    1. Deve-se validar que o campo "exp" não seja menor do que o horário atual
3. Verficiar audiência do token 
    1. Deve-se validar que o campo "aud" seja o seu nome, ou seja, o nome do provedor que está recebendo a requisição
4. Verificar o scope 
    1. Deve-se validar que o campo "scope" contenha o scope necessário para requisitar o endpoint. Um token pode possuir mais de um scope separados por espaço em branco.

</details><details id="bkmrk-chave-publica-eco-ut"><summary>Chave Publica Eco-UTM</summary>

\-----BEGIN PUBLIC KEY-----  
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHkNtpy3GB0YTCl2VCCd22i0rJwI  
GBSazD4QRKvH6rch0IP4igb+02r7t0X//tuj0VbwtJz3cEICP8OGSqrdTSCGj5Y0  
3Oa2gPkx/0c0V8D0eSXS/CUC0qrYHnAGLqko7eW87HW0rh7nnl2bB4Lu+R8fOmQt  
5frCJ5eTkzwK5YczAgMBAAE=  
\-----END PUBLIC KEY-----

</details>

# Introdução Teórica RID e DSS

### Tracking / Network Remote ID

Tracking, Network Remote ID, ou simplesmente Net-RID, é um serviço que permite uma aeronave não tripulada (UAS) prover sua localização, identificação de seu operador e outras informações operacionais relevantes, que podem ser obtidas por entidades autorizadas como órgãos fiscalizadores, outros provedores operando na mesma área, ou até mesmo a população em geral.

Para fornecer o serviço de Net-RID, o provedor deve ser capaz de trocar informações com outros provedores utilizando a interface definida no padrão internacional [ASTM 3411-22a - Standard Specification for Remote ID and Tracking](https://www.astm.org/f3411-22a.html). Para possibilitar a interoperabilidade dos participantes e provedores, deve ser fornecido o serviço de "Service Discovery", que permite a descoberta de outros provedores atuando na mesma área.

<div drawio-diagram="125"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702641413.png" alt=""/></div>

Diagrama: Modelo conceitual

A ASTM também indica a seguinte documentação de API, como sugestão de interfaces para comunicação entre os serviços acima, que pode ser encontrada no padrão OpenAPI em: [https://github.com/uastech/standards/tree/astm\_rid\_api\_2.1/remoteid](https://github.com/uastech/standards/tree/astm_rid_api_2.1/remoteid)

Para nosso ensaio, seguiremos inicialmente a proposta acima, com possibilidade de alterações conforme o grupo achar necessário.

### Service Discovery

Conforme previsto no padrão ASTM F3411-22a, o service discovery deve possibilitar com que provedores descubram outros provedores atuando na mesma região, para que estes possam se comunicar. No cenário de comunicação HTTP, descobrir um provedor significa conhecer seu endereço web (url) para poder enviar requisições HTTP, em endpoints pré-definidos.

Para isso, a Linux Foundation possui um projeto chamado [InterUSS Platform](https://interussplatform.org/) que possui uma implementação do service discovery de maneira distribuída e sincronizada, denominado DSS (Discovery and Synchronization Service). Distribuído significa que várias entidades podem subir suas próprias instâncias do serviço, descentralizando e garantindo que não exista um ponto único de falha. Sincronizado significa que mesmo que haja múltiplas instâncias, todas possuem as mesmas informações ao mesmo tempo.

No escopo do ensaio, será utilizado o DSS sem nenhuma modificação inicial. Porém, para simplificação dos testes, o serviço possuirá somente uma instância, provida pelo DECEA. Isso permite que os potenciais provedores possam focar em implementar suas responsabilidades específicas e agilizar os processos do ensaio.

### Serviços BR-UTM

Seguindo a matriz de serviços que devem ser atendidos pelo BR-UTM, ao final do ensaio esperamos atender de forma completa o serviço de Discovery Service com o DSS, e o de Tracking and Location Service com o Net-RID. Também esperamos atender de forma parcial o Activity Reporting System com o Display Service do Net-RID.

<div drawio-diagram="127"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702647159.png" alt=""/></div>

# Autenticação Service Provider

### API Key:

Na comunicação do BR-UTM (imagem abaixo), as requisições devem ser autenticadas e autorizadas. Devido à natureza distribuída da arquitetura, não é viável que cada provedor possua sua lógica de autenticação e autorização.

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-04/scaled-1680-/image.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-04/image.png)

Portando, a solução proposta pela ASTM é a de um servidor de autenticação central onde os provedores obtém tokens OAuth2 codificados e assinados em JWT. O Validator da documentação abaixo checa a validade da assinatura do token, utilizando a chave pública do Auth Server.

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-04/scaled-1680-/LgFimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-04/LgFimage.png)

Um exemplo de troca de mensagens autenticadas é:

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-04/scaled-1680-/n2zimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-04/n2zimage.png)

### Uso da API Key  


Com sua API Key, você pode realizar ações programaticamente no ECO-UTM:

1. <span style="background-color: rgb(224, 62, 45);">Insira a sua API Key no *header* da requisição;</span>
2. <span style="background-color: rgb(224, 62, 45);">Insira o `scope` </span>
3. <span style="background-color: rgb(224, 62, 45);">Insira o `intended_audience`</span>  
    
    1. <span style="background-color: rgb(224, 62, 45);">Em caso de comunicação com outro USS, o preencha com o conteúdo do campo `manager` da resposta do DSS.</span>

### Validator

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/scaled-1680-/Pbcimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-06/Pbcimage.png)

#### Implementação

Código de exemplo para início da implementação do Auth Server e do Validator em Go

<details id="bkmrk-c%C3%B3digo-exemplo-packa"><summary>Código exemplo</summary>

```go
package main

import (
	"encoding/json"
	"flag"
	"log"
	"net/http"
	"os"
	"strings"

	"github.com/golang-jwt/jwt"
)

var (
	keyFile       = flag.String("private_key_file", "auth.key", "OAuth private key file")
	publicKeyFile = flag.String("public_key_file", "auth.pem", "OAuth public key file")
)

func verifyToken(token string) (bool, error) {
	bytes, err := os.ReadFile(*publicKeyFile)
	if err != nil {
		log.Panic(err)
	}

	publicKey, err := jwt.ParseRSAPublicKeyFromPEM(bytes)
	if err != nil {
		log.Panic(err)
	}

	parts := strings.Split(token, ".")
	err = jwt.SigningMethodRS256.Verify(strings.Join(parts[0:2], "."), parts[2], publicKey)
	if err != nil {
		return false, nil
	}
	return true, nil

}

func main() {

	http.HandleFunc("/validate", func(w http.ResponseWriter, r *http.Request) {
		tokenString := r.URL.Query().Get("token")
		valid, err := verifyToken(tokenString)
		if err != nil {
			log.Panic(err)
		}

		log.Println(valid)
	})

	http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) {
		
		token := jwt.NewWithClaims(jwt.SigningMethodRS256, jwt.MapClaims{
			"aud":   "aud",
			"scope": "scope",
			"iss":   "iss",
			"exp":   "exp",
			"sub":   "sub",
		})

		// Read private key
		bytes, err := os.ReadFile(*keyFile)
		if err != nil {
			log.Panic(err)
		}
		privateKey, err := jwt.ParseRSAPrivateKeyFromPEM(bytes)
		if err != nil {
			log.Panic(err)
		}

		// Sign and get the complete encoded token as a string using the secret
		tokenString, err := token.SignedString(privateKey)
		if err != nil {
			log.Panic(err)
		}

		resp := make(map[string]string)
		resp["access_token"] = tokenString
		jsonResp, err := json.Marshal(resp)
		if err != nil {
			log.Fatalf("Error happened in JSON marshal. Err: %s", err)
		}
		w.WriteHeader(http.StatusOK)
		w.Header().Set("Content-Type", "application/json")
		w.Write(jsonResp)
		return

	})

	log.Fatal(http.ListenAndServe(":9096", nil))
}
```

</details><details id="bkmrk-eco-utm-autenticator"><summary>Eco-UTM Autenticator Public Key</summary>

```
-----BEGIN PUBLIC KEY-----
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHkNtpy3GB0YTCl2VCCd22i0rJwI
GBSazD4QRKvH6rch0IP4igb+02r7t0X//tuj0VbwtJz3cEICP8OGSqrdTSCGj5Y0
3Oa2gPkx/0c0V8D0eSXS/CUC0qrYHnAGLqko7eW87HW0rh7nnl2bB4Lu+R8fOmQt
5frCJ5eTkzwK5YczAgMBAAE=
-----END PUBLIC KEY-----
```

</details>### Lista de endpoints  


**A lista completa de *endpoints* também está disponível neste [link](http://montreal.icea.decea.mil.br:64235/swagger)<span style="background-color: rgb(224, 62, 45);">, [neste arquivo OpenAPI](https://servicos2.decea.mil.br/br-utm/wiki/attachments/31) e [nesta coleção no Insomina.](https://servicos2.decea.mil.br/br-utm/wiki/attachments/32)</span>**

#### ECO-UTM

A URL base para os seguintes *endpoints* é `<a href="http://montreal.icea.decea.mil.br:64235/">http://montreal.icea.decea.mil.br:64235/</a>`

---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 75px;"></col><col></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/token</td></tr></tbody></table>

Aprovar token de autenticação do provedor associado ao usuário

<details id="bkmrk-query-parameters-vie"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 59.5938px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">intented\_audience</td><td style="height: 29.7969px;"><span style="color: rgb(0, 0, 0);">user da entetidade de destino da mensagem</span>  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">scope</td><td style="height: 29.7969px;"><span style="color: rgb(0, 0, 0);">escopo da requisição</span></td></tr><tr><td>apikey</td><td><span style="color: rgb(0, 0, 0);">chave recebida do ICEA</span></td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 193.969px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 113.781px;"><td style="height: 113.781px;">token</td><td style="height: 113.781px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span></span>  
</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22timestam"><summary>Código exemplo python</summary>

```ht
response = requests.get(
            f"{AUTH_URL}/token",
            params={
                "grant_type": "client_credentials",
                "intended_audience": "localhost",
                "scope": "utm.constraint_management",
                "apikey": "brutm",
            },
        )
```

</details><details id="bkmrk-response-200-success"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 59.5938px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">200  
</td><td style="height: 29.7969px;">Success  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">403  
</td><td style="height: 29.7969px;">Non-Authoritative Information</td></tr></tbody></table>

</details><details id="bkmrk-response-body-access"><summary>Response Body</summary>

<table border="1" style="width: 100%;"><tbody><tr><td style="width: 15.145%;">access\_token</td><td style="width: 84.855%;">token de acesso ao ECO-UTM</td></tr></tbody></table>

</details>---

# [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

<div drawio-diagram="173"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-01/drawing-3-1704906440.png" alt=""/></div>

### 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

---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 75px;"></col><col></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/uss/flights</td></tr></tbody></table>

Endpoint onde os Display Providers obterão os dados de tracking das aeronaves sob responsabilidade do Service Provider em uma determinada área

<details id="bkmrk-query-parameters-vie"><summary>Query Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 193.969px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 113.781px;"><td style="height: 113.781px;">view</td><td style="height: 113.781px;">Á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ção</td><td style="height: 113.781px;">29.978,31.132,29.980,31.135</td></tr><tr style="height: 80.1875px;"><td style="height: 80.1875px;">recent\_positions\_duration</td><td style="height: 80.1875px;">Se 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

</td><td style="height: 80.1875px;">60</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22timestam"><summary>Response</summary>

```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
}
```

<table border="1" style="border-collapse: collapse; width: 100%; height: 438.109px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">timestamp</td><td style="height: 29.7969px;">Horário em que o Service Provider recebeu a requisição</td></tr><tr style="height: 124.953px;"><td style="height: 124.953px;">flights.id</td><td style="height: 124.953px;">ID ú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.

</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">flights.aircraft\_type</td><td style="height: 63.3906px;">Tipo de aeronave no padrão ICAO. Para drones, o tipo = Helicopter. Para drones de asa fixa que conseguem decolar verticalmente, o tipo = "HybridLift"</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">flights.current\_state</td><td style="height: 29.7969px;">Dados do tracking de fato da aeronave, no momento atual.</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">flights.operating\_area</td><td style="height: 63.3906px;">A área que a aeronave se encontra. Deve ser usado apenas quando o campo "flights.current\_state" não está preenchido.</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">flights.recent\_positions</td><td style="height: 63.3906px;">Lista de posições recentes da aeronave. Deve ser informado apenas quando as "recent\_positions" foram requisitadas.</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">no\_isas\_present</td><td style="height: 63.3906px;">Indica 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.</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights%2F%7Bid" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #61affe;">**GET**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/uss/flights/{id}/details</td></tr></tbody></table>

Endpoint onde os Display Providers obterão dados específicos de um determinado voo

<details id="bkmrk-path-parameters-id-i"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.7969px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 25.0321%;"></col><col style="width: 25.0321%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">id</td><td style="height: 29.7969px;">ID único do provedor para identificar o voo</td><td>b41f2785-1182-4c2e-82d5-f72f754b3fe2.0dfe0e82-fd7a-44d9-af17-7fdd42751b45</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22details%22"><summary>Response</summary>

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

<table border="1" style="border-collapse: collapse; width: 100%; height: 178.781px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">uas\_id</td><td style="height: 29.7969px;">Código SISANT da aeronave</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">operator\_id</td><td style="height: 29.7969px;">Código SARPAS do operador</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">operator\_location</td><td style="height: 29.7969px;">Localização do operador. Opcional</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">operation\_description</td><td style="height: 29.7969px;">Descrição da Operação conforme solicitação no SARPAS</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fidentificat" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #61affe;">**GET**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/uss/identification\_service\_areas/{id}</td></tr></tbody></table>

Endpoint para obter o volume 4D de uma ISA controlada pelo Service Provider

<details id="bkmrk-path-parameters-id-u"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.7969px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 25.0321%;"></col><col style="width: 25.0321%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">id</td><td style="height: 29.7969px;">UUID da área possuída pelo provedor</td><td>UUID</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22extents%22"><summary>Response</summary>

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

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>volume</td><td>Volume 4D da área específica</td></tr></tbody></table>

</details>### 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:

<table border="1" class="align-center" id="bkmrk-put-%2Fdss%2Fidentificat" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #fca130;">**PUT**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/dss/identification\_service\_area/{id}</td></tr></tbody></table>

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

<details id="bkmrk-path-param-id-uuid-g"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>id</td><td>UUID da ISA. Deve ser o mesmo UUID devolvido pelo ECO-UTM após a criação da solicitação de voo.  
</td></tr></tbody></table>

</details><details id="bkmrk-body-%7B-%22extents%22%3A-%7B-"><summary>Body</summary>

```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

<table border="1" style="border-collapse: collapse; width: 100%; height: 76.3907px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td style="height: 46.5938px;">volume</td><td style="height: 46.5938px;">Polígono **OU** círculo da área, idêntico ao definido no SARPAS</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">altitude\_lower, altitude\_upper</td><td style="height: 29.7969px;">Altitude geodésica (WSG84, W84) máxima e mínima em metros.

</td></tr><tr><td>time\_start, time\_end</td><td>Horário de início e fim da área. Todos os horários devem estar no timezone Zulo (UTC+0). O único formato suportado é "RFC3339"

</td></tr><tr><td>uss\_base\_url</td><td>URL 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.

</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22subscrib"><summary>Response</summary>

```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

<table border="1" style="border-collapse: collapse; width: 100%; height: 141.781px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 63.3906px;"><td style="height: 63.3906px;">subcribers</td><td style="height: 63.3906px;">Lista dos atuais subcribers dessa área. Caso a lista não esteja vazia, é **OBRIGATÓRIO** o envio da ISA para cada um dos subscribers listados</td></tr><tr style="height: 78.3906px;"><td style="height: 78.3906px;">version</td><td style="height: 78.3906px;">Versão da ISA, gerado pelo DSS, para garantia de integridade. É necessário utilizar esse campo para atualizar ou deletar uma ISA.</td></tr></tbody></table>

</details>

# [Tracking] Onboarding Display Provider

No contexto do serviço de Tracking, um Display Provider é um provedor USS que tem objetivo de exibir a posição de drones em tempo real para seus usuários.

### Pré-requisitos técnicos

Para um USS se tornar um provedor de display 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 requisições
2. Possuir App para visualização de posição de drones

### Autenticação

Para o ensaio, a autenticação será feita em um serviço OAuth centralizado do DECEA, ainda a ser descrito.

### 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/uastech/standards/tree/astm\_rid\_api\_2.1/remoteid](https://github.com/uastech/standards/tree/astm_rid_api_2.1/remoteid)

Conforme o padrão OpenAPI acima, os endpoints que o Display Provider precisará prover:

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 75px;"></col><col></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(73, 204, 144);">**POST**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/uss/identification\_service\_areas/{id}</td></tr></tbody></table>

<details id="bkmrk-path-parameters-id-u-1"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>id</td><td>UUID da ISA</td></tr></tbody></table>

</details><details id="bkmrk-request-body-%7B-%22serv"><summary>Request Body</summary>

</details>### Interação com DSS

O Service Provider, conforme definido no padrão ASTM3411-22a, deve criar entidades de Subscription em uma área específica, para encontrar os atuais Service Providers, e também para receberem notificações caso novos provedores se registrem na área. Os endpoints expostos pelo DSS estão descritos no arquivo OpenAPI descrito acima.

Como exemplo, o endpoint abaixo é para criação de Subscriptions:

<table border="1" class="align-center" id="bkmrk-put-%2Fdss%2Fidentificat" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #fca130;">**PUT**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/dss/subscriptions/{id}</td></tr></tbody></table>

<details id="bkmrk-path-parameters-id-u"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>id</td><td>UUID da Subscription, criado pelo Display Provider</td></tr></tbody></table>

</details><details id="bkmrk-request-body-%7B-%22exte"><summary>Request Body</summary>

```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

<table border="1" style="border-collapse: collapse; width: 100%; height: 76.3907px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td style="height: 46.5938px;">volume</td><td style="height: 46.5938px;">Polígono **OU** círculo da área, idêntico ao definido no SARPAS</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">altitude\_lower, altitude\_upper</td><td style="height: 29.7969px;">Altitude geodésica (WSG84, W84) máxima e mínima em metros.

</td></tr><tr><td>time\_start, time\_end</td><td>Horário de início e fim da área. Todos os horários devem estar no timezone Zulo (UTC+0). O único formato suportado é "RFC3339"

</td></tr><tr><td>uss\_base\_url</td><td>URL 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.

</td></tr></tbody></table>

</details><details id="bkmrk-response-body-%7B-%22ser"><summary>Response Body</summary>

```json
{
  "service_areas": [],
  "subscription": {
    "id": "string",
    "uss_base_url": "https://example.com/rid",
    "owner": "myuss",
    "notification_index": 0,
    "time_end": {
      "value": "1985-04-12T23:20:50.52Z",
      "format": "RFC3339"
    },
    "time_start": {
      "value": "1985-04-12T23:20:50.52Z",
      "format": "RFC3339"
    },
    "version": "string"
  }
}
```

<table border="1" style="border-collapse: collapse; width: 100%; height: 122.984px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 63.3906px;"><td style="height: 63.3906px;">service\_areas</td><td style="height: 63.3906px;">Lista de ISAs já existentes no volume 4D. Caso a lista não esteja vazia, o Display Provider deve solicitar os dados de telemetria para as URLs definidas na lista</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">version</td><td style="height: 29.7969px;">Versão da Subscription, gerado pelo DSS, para garantia de integridade. É necessário utilizar esse campo para atualizar ou deletar uma Subscription.</td></tr></tbody></table>

</details>

# [USS Qualifier] Teste automatizado de Provedor

US: [https://pista.decea.mil.br/project/br-utm-tecnologia/us/41?milestone=309](https://pista.decea.mil.br/project/br-utm-tecnologia/us/41?milestone=309)

#### Introdução

A [InterUSS](https://interussplatform.org/) disponibiliza um conjunto de testes suites automatizados ([USS QUALIFIER](https://github.com/interuss/monitoring)) para validar os conformidade na implementação de UAS Service Suppliers (USS).

Validação dos seguintes critérios de conforme:  
\- [Remote ID ](https://www.astm.org/f3411-22a.html)(ASTM F3411-19/22);  
-[ Strategic Conflict Detection ](https://www.astm.org/f3548-21.html)(ASTM F3548-21);  
\- UAS Traffic Management (UTM) UAS Service Supplier (USS) Interoperability Specification.

Como a implementação do DSS feita pelo time de pesquisa do ICEA foi feita a partir da solução da InterUSS, para um provedor se integrar ao nosso ecossistema, sua implementação deve estar em concordância com as normas utilizadas em sua implementação.

O objetivo dessa US é implementar a configuração de um ambiente de testes automatizada a partir de um arquivo .env

#### Solução

Para utilizar USS locais em seus testes, deve-se subir um container contendo a aplicação e sua configuração de ambiente, a qual deve conter as seguintes variáveis:

```yaml
 environment:
      - MOCK_USS_AUTH_SPEC=DummyOAuth(http://oauth.authority.localutm:8085/token,uss1)
      - MOCK_USS_DSS_URL=http://dss.uss1.localutm
      - MOCK_USS_PUBLIC_KEY=/var/test-certs/auth2.pem
      - MOCK_USS_TOKEN_AUDIENCE=scdsc.uss1.localutm,localhost,host.docker.internal
      - MOCK_USS_BASE_URL=http://scdsc.uss1.localutm
      - MOCK_USS_SERVICES=scdsc,versioning,interaction_logging,flight_planning
      - MOCK_USS_INTERACTIONS_LOG_DIR=output/scdsc_a_interaction_logs
      - MOCK_USS_PORT=80
      - MOCK_USS_PROXY_VALUES=x_for=1,x_proto=1,x_host=1,x_prefix=1,x_port=1
```

Após configurar e implantar o USS, pode-se configurar o test suite que deseja executar. Como existem perfis diferentes de USS, foram disponibilizados arquivos de configuração visando validar conformes mais específicos dos seus respectivos tipos, estes podem ser encontrados no diretório `monitoring/monitoring/uss_qualifier/configurations/dev/`

[![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/Efcimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/Efcimage.png)

Caso seja necessário criar um novo arquivo de teste, é necessário implementá-lo através de um arquivo .yaml ou JSON seguindo as guidelines definidas nesse [README](https://github.com/interuss/monitoring/tree/03a462d7a209528b885ffa9651d936e8b4df8f18/monitoring/uss_qualifier/configurations)

#### How to

[Quick start guide](https://github.com/interuss/monitoring/tree/main/monitoring/uss_qualifier)

```bash

git clone https://github.com/interuss/monitoring.git

cd monitoring

#deploys local infrastructure containing DSS, database and Auth Server 
make start-locally

COMPOSE_PROFILES='' make start-uss-mocks

cd /monitoring/uss_qualifier

./run_locally.sh

```

# OIR Status

<span style="color: rgb(34, 34, 34); font-family: var(--font-heading, var(--font-body)); font-size: 1.666em; font-weight: 400;">Responsabilidades Provedores</span>

- <span style="text-decoration: underline;">Utilizar todos os estados das OIRs</span>
    - Ao criar uma OIR, ela está no estado "Accepted". Quando a operação iniciar, o provedor deve mudar o status para "Activated". Ao fim da operação, o provedor deve encerrar a OIR, deletando ela do DSS.
    - Em casos de Não conformidade e contingência, o provedor deve mudar o status da OIR. Os outros provedores subscritos na área devem agir de acordo com a nova situação.
    - [![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/qRoimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/qRoimage.png)
- <span style="text-decoration: underline;">Utilizar NTP do ICEA</span>
    - O ICEA disponibilizará um servidor NTP para sincronizar os horários entre todos os provedores.
    - [![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/dqbimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/dqbimage.png)
- <span style="text-decoration: underline;">Utilizar altitude WSG84</span>
    - Padronizar o uso de altitude utilizando o padrão WSG84.
- <span style="text-decoration: underline;">Utilizar autenticação</span>
    - Para comunicação com o DSS e entre provedores, toda requisição deve possuir um token emitido pelo servidor de autenticação do ICEA
- <span style="text-decoration: underline;">Utilizar campo de prioridade na OIR</span>
    - Os provedores devem considerar o campo "priority" na criação de OIR.
    - Uma OIR com prioridade maior pode "sobrescrever" uma com prioridade menor. Ou seja, as OIRs com maior prioridade podem ser criadas onde já existia uma outra OIR com prioridade menor.
    - A tabela descrevendo qual a prioridade de cada tipo de operação ainda será definida.
- <span style="text-decoration: underline;">Permitir conflito entre voos VLOS/EVLOS</span>
    - OIRs para voos visuais podem ter conflito com outras OIRs de voos visuais.
    - OIRs para voos não visuais não podem ter conflito com nenhuma outra OIR, de nenhum tipo

# Modelagem de Processos - Autorização de Voo por Provedores

O processo habitual de autorização de voo por provedores deve seguir o seguinte fluxo:

[![0 - Fluxo.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/0-fluxo-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/0-fluxo-1.png "Teste")

Fluxo de Autorização e Ativação de Voo

---

#### Autorização de Voo

O processo de Autorização de Voo (P1) é a primeira etapa do desconflito estratégico de uma operação com drone. O processo começa com um pedido do operador. Esse pedido deve seguir um padrão (ainda não definido), e esse padrão deve ser validado pelo provedor USS. Após, o provedor deve realizar a checagem de desconflito estratégico, e por fim cadastrar o novo voo no ECO-UTM. Caso alguma checagem falhe, o provedor deve notificar o operador dessa falha. É permitido, porém não obrigatório, que o USS sugira alternativas para o operador em casos de rejeição.

[![1 - Autorização de Voo (1).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/1-autorizacao-de-voo-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/1-autorizacao-de-voo-1.png)

P1 - Autorização de Voo

[![1.1 - Desconflito Estratégico (1).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/1-1-desconflito-estrategico-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/1-1-desconflito-estrategico-1.png)

P1.1 - Desconflito Estratégico

---

#### Ativação de Voo

Após ter seu voo aprovado, o operador deve solicitar a ativação do voo instantes antes de sua execução. Nessa etapa, o provedor deve garantir que a autorização de voo continua válida, e que as condições de voo (condições ainda não definidas) permitem a realização segura do voo. Após a checagem, o USS notifica o operador que ele pode inicar a operação.

Então, o provedor aguarda notificação do operador sobre o encerramento da operação. Recebendo a notificação, o operador deve encerrar o plano de voo no ECO-UTM.

[![2 - Ativação de voo (3).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/2-ativacao-de-voo-3.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/2-ativacao-de-voo-3.png)

P2 - Ativação de Voo

---

#### Mudanças Dinâmicas

No período entre a autorização e a ativação, pode ocorrer mudanças nas condições do espaço aéreo, como uma nova restrição ou um novo voo com maior prioridade. Nesses casos, é de suma importância que o USS notifique o operador dessa atualização, para evitar frustrações do operador na hora da ativação do voo.

[![3 - Mudanças Dinâmicas (1).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/3-mudancas-dinamicas-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/3-mudancas-dinamicas-1.png)

P3 - Mudanças Dinâmicas

---

#### Emergência

WIP

# Operações USS: Diagramas de Sequencia

#### Cenário 1:

Apenas um Service provider e nenhum Display provider na área durante o Voo

<div drawio-diagram="255"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-02/drawing-3-1709118152.png" alt=""/></div>

#### Cenário 2:

Service provider cria área onde já existe uma Subscription (Display Provider)

<div drawio-diagram="730"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2025-07/drawing-3-1752236349.png" alt=""/></div>

#### Cenário 3:

Criação de Subscription onde já exista ISA

<div drawio-diagram="116"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702578754.png" alt=""/></div>

#### Cenário 4:

Usuário do Display Provider deseja visualizar uma área. Nessa área já existe um Service Provider (USS 1), e durante a exibição, um novo Service Provider (USS 2) inicia operações na área. Esse cenário foi adaptado da documentação do InterUSS DSS.

<div drawio-diagram="128"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702692143.png" alt=""/></div>

# [USS][Desconflito] Código Exemplo

Exemplo de código Provedor de Desconflito (Go e Python): [https://github.com/dp-icea/scd\_provider](https://github.com/dp-icea/scd_provider)

Para realizar autenticação:

1. Verificar se está gerando o token

Para criar OIR:

1. Enviar GeoJSON da área desejada

Abaixo segue exemlpo de código em Python:

<details id="bkmrk-app.py-from-flask-im"><summary>app.py</summary>

```python
from flask import Flask, request

from dss import Dss

import json

app = Flask(__name__)

database = {}

dss = Dss()


@app.route('/uss/v1/operational_intents/<operational_intent_id>', methods=['GET'])
def get_oir(operational_intent_id):
    print(database)
    if operational_intent_id not in database:
        return {"msg": 'No such OIR'}, 404

    return json.dumps(database[operational_intent_id], default=lambda o: o.__dict__)


@app.route('/injection/oir', methods=['PUT'])
def inject_oir():
    volume = request.get_json()
    try:
        dss.conflict_manager.check_restrictions(volume)
        dss.scd.check_strategic_conflicts(volume)
        oir = {}
        oir["operational_intent"] = {}
        oir["operational_intent"]["reference"] = dss.scd.put_operational_intent(volume)
        oir["operational_intent"]["details"] = {
            "volumes": [],
            "off_nominal_volumes": [],
            "priority": 0
        }
        oir["operational_intent"]["details"]["volumes"].append(volume)
        database[oir["operational_intent"]["reference"]['id']] = oir


    except Exception as ex:
        print(f"Erro na criação: {ex}")
        return {"msg": "Erro"}, 400

    return {"Success": True}, 201


if __name__ == '__main__':
    app.run(port=5050)


```

</details><details id="bkmrk-dss.py-from-conflict"><summary>dss.py</summary>

```python
from conflict_manager import ConflictManager
from scd import Scd


class Dss:
    def __init__(self) -> None:
        self.conflict_manager = ConflictManager()
        self.scd = Scd()

```

</details><details id="bkmrk-scd.py-import-reques"><summary>scd.py</summary>

```python
import requests
import uuid

from env import USS_BASE_URL, DSS_HOST


class Scd:

    def __init__(self) -> None:
        self.auth()

    def auth(self):
        url = "http://kong.icea.decea.mil.br:64235/token?grant_type=client_credentials&intended_audience=localhost&issuer=localhost&scope={0}"
        self.strategic_coordination = requests.get(url.format("utm.strategic_coordination")).json()["access_token"]

    def check_strategic_conflicts(self, volume):
        url = DSS_HOST + "/dss/v1/operational_intent_references/query"
        body = {
            "area_of_interest": volume
        }
        header = {"authorization": f"Bearer {self.strategic_coordination}"}
        response = requests.post(url, headers=header, json=body).json()

        if (len(response['operational_intent_references']) > 0):
            raise Exception(f"Interseção com outra Intenção {response['operational_intent_references'][0]['id']}")
        else:
            print("Sem intenções para o volume")
        
    def put_operational_intent(self, volume):
        id = str(uuid.uuid4())
        url = DSS_HOST + f"/dss/v1/operational_intent_references/{id}"

        body = {
            "flight_type": "VLOS",
            "extents": [volume],
            "key": [],
            "state": "Accepted",
            "uss_base_url": USS_BASE_URL,
            "new_subscription": {
                "uss_base_url": USS_BASE_URL,
                "notify_for_constraint": False
            }
        }

        print(body)

        header = {"authorization": f"Bearer {self.strategic_coordination}"}

        response = requests.put(url, headers=header, json=body).json()

        print(f"OIR criada com id: {id}")
        print(response)

        return response['operational_intent_reference']


```

</details><details id="bkmrk-conflict_manager.py-"><summary>conflict\_manager.py</summary>

```python
import requests
import uuid

from env import USS_BASE_URL, DSS_HOST


class Scd:

    def __init__(self) -> None:
        self.auth()

    def auth(self):
        url = "http://kong.icea.decea.mil.br:64235/token?grant_type=client_credentials&intended_audience=localhost&issuer=localhost&scope={0}"
        self.strategic_coordination = requests.get(url.format("utm.strategic_coordination")).json()["access_token"]

    def check_strategic_conflicts(self, volume):
        url = DSS_HOST + "/dss/v1/operational_intent_references/query"
        body = {
            "area_of_interest": volume
        }
        header = {"authorization": f"Bearer {self.strategic_coordination}"}
        response = requests.post(url, headers=header, json=body).json()

        if (len(response['operational_intent_references']) > 0):
            raise Exception(f"Interseção com outra Intenção {response['operational_intent_references'][0]['id']}")
        else:
            print("Sem intenções para o volume")
        
    def put_operational_intent(self, volume):
        id = str(uuid.uuid4())
        url = DSS_HOST + f"/dss/v1/operational_intent_references/{id}"

        body = {
            "flight_type": "VLOS",
            "extents": [volume],
            "key": [],
            "state": "Accepted",
            "uss_base_url": USS_BASE_URL,
            "new_subscription": {
                "uss_base_url": USS_BASE_URL,
                "notify_for_constraint": False
            }
        }

        print(body)

        header = {"authorization": f"Bearer {self.strategic_coordination}"}

        response = requests.put(url, headers=header, json=body).json()

        print(f"OIR criada com id: {id}")
        print(response)

        return response['operational_intent_reference']


```

</details>

# Onboarding Provedores Tracking (Ensaio)

Onboarding para novos provedores do serviço de Tracking para o Ensaio de mar/2024

# Introdução

### Tracking / Network Remote ID

Tracking, Network Remote ID, ou simplesmente Net-RID, é um serviço que permite uma aeronave não tripulada (UAS) prover sua localização, identificação de seu operador e outras informações operacionais relevantes, que podem ser obtidas por entidades autorizadas como órgãos fiscalizadores, outros provedores operando na mesma área, ou até mesmo a população em geral.

Para fornecer o serviço de Net-RID, o provedor deve ser capaz de trocar informações com outros provedores utilizando a interface definida no padrão internacional [ASTM 3411-22a - Standard Specification for Remote ID and Tracking](https://www.astm.org/f3411-22a.html). Para possibilitar a interoperabilidade dos participantes e provedores, deve ser fornecido o serviço de "Service Discovery", que permite a descoberta de outros provedores atuando na mesma área.

<div drawio-diagram="125"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702641413.png" alt=""/></div>

Diagrama: Modelo conceitual

A ASTM também indica a seguinte documentação de API, como sugestão de interfaces para comunicação entre os serviços acima, que pode ser encontrada no padrão OpenAPI em: [https://github.com/uastech/standards/tree/astm\_rid\_api\_2.1/remoteid](https://github.com/uastech/standards/tree/astm_rid_api_2.1/remoteid)

Para nosso ensaio, seguiremos inicialmente a proposta acima, com possibilidade de alterações conforme o grupo achar necessário.

### Service Discovery

Conforme previsto no padrão ASTM F3411-22a, o service discovery deve possibilitar com que provedores descubram outros provedores atuando na mesma região, para que estes possam se comunicar. No cenário de comunicação HTTP, descobrir um provedor significa conhecer seu endereço web (url) para poder enviar requisições HTTP, em endpoints pré-definidos.

Para isso, a Linux Foundation possui um projeto chamado [InterUSS Platform](https://interussplatform.org/) que possui uma implementação do service discovery de maneira distribuída e sincronizada, denominado DSS (Discovery and Synchronization Service). Distribuído significa que várias entidades podem subir suas próprias instâncias do serviço, descentralizando e garantindo que não exista um ponto único de falha. Sincronizado significa que mesmo que haja múltiplas instâncias, todas possuem as mesmas informações ao mesmo tempo.

No escopo do ensaio, será utilizado o DSS sem nenhuma modificação inicial. Porém, para simplificação dos testes, o serviço possuirá somente uma instância, provida pelo DECEA. Isso permite que os potenciais provedores possam focar em implementar suas responsabilidades específicas e agilizar os processos do ensaio.

### Serviços BR-UTM

Seguindo a matriz de serviços que devem ser atendidos pelo BR-UTM, ao final do ensaio esperamos atender de forma completa o serviço de Discovery Service com o DSS, e o de Tracking and Location Service com o Net-RID. Também esperamos atender de forma parcial o Activity Reporting System com o Display Service do Net-RID.

<div drawio-diagram="127"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702647159.png" alt=""/></div>

# Onboarding Service Provider

No contexto do serviço de Tracking, 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.

### 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

### Autenticação

Para o ensaio, a autenticação será feita em um serviço OAuth centralizado do DECEA, ainda a ser descrito.

### Fluxograma

<div drawio-diagram="173"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-01/drawing-3-1704906440.png" alt=""/></div>

### 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/uastech/standards/tree/astm\_rid\_api\_2.1/remoteid](https://github.com/uastech/standards/tree/astm_rid_api_2.1/remoteid)

Conforme o padrão OpenAPI acima, os endpoints que o Service Provider precisará prover

---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 75px;"></col><col></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/uss/flights</td></tr></tbody></table>

Endpoint onde os Display Providers obterão os dados de tracking das aeronaves sob responsabilidade do Service Provider em uma determinada área

<details id="bkmrk-query-parameters-vie"><summary>Query Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 193.969px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 113.781px;"><td style="height: 113.781px;">view</td><td style="height: 113.781px;">Á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ção</td><td style="height: 113.781px;">29.978,31.132,29.980,31.135</td></tr><tr style="height: 80.1875px;"><td style="height: 80.1875px;">recent\_positions\_duration</td><td style="height: 80.1875px;">Se 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

</td><td style="height: 80.1875px;">60</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22timestam"><summary>Response</summary>

```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
}
```

<table border="1" style="border-collapse: collapse; width: 100%; height: 438.109px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">timestamp</td><td style="height: 29.7969px;">Horário em que o Service Provider recebeu a requisição</td></tr><tr style="height: 124.953px;"><td style="height: 124.953px;">flights.id</td><td style="height: 124.953px;">ID ú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.

</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">flights.aircraft\_type</td><td style="height: 63.3906px;">Tipo de aeronave no padrão ICAO. Para drones, o tipo = Helicopter. Para drones de asa fixa que conseguem decolar verticalmente, o tipo = "HybridLift"</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">flights.current\_state</td><td style="height: 29.7969px;">Dados do tracking de fato da aeronave, no momento atual.</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">flights.operating\_area</td><td style="height: 63.3906px;">A área que a aeronave se encontra. Deve ser usado apenas quando o campo "flights.current\_state" não está preenchido.</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">flights.recent\_positions</td><td style="height: 63.3906px;">Lista de posições recentes da aeronave. Deve ser informado apenas quando as "recent\_positions" foram requisitadas.</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">no\_isas\_present</td><td style="height: 63.3906px;">Indica 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.</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights%2F%7Bid" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #61affe;">**GET**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/uss/flights/{id}/details</td></tr></tbody></table>

Endpoint onde os Display Providers obterão dados específicos de um determinado voo

<details id="bkmrk-path-parameters-id-i"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.7969px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 25.0321%;"></col><col style="width: 25.0321%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">id</td><td style="height: 29.7969px;">ID único do provedor para identificar o voo</td><td>b41f2785-1182-4c2e-82d5-f72f754b3fe2.0dfe0e82-fd7a-44d9-af17-7fdd42751b45</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22details%22"><summary>Response</summary>

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

<table border="1" style="border-collapse: collapse; width: 100%; height: 178.781px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">uas\_id</td><td style="height: 29.7969px;">Código SISANT da aeronave</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">operator\_id</td><td style="height: 29.7969px;">Código SARPAS do operador</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">operator\_location</td><td style="height: 29.7969px;">Localização do operador. Opcional</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">operation\_description</td><td style="height: 29.7969px;">Descrição da Operação conforme solicitação no SARPAS</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fidentificat" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #61affe;">**GET**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/uss/identification\_service\_areas/{id}</td></tr></tbody></table>

Endpoint para obter o volume 4D de uma ISA controlada pelo Service Provider

<details id="bkmrk-path-parameters-id-u"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.7969px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 25.0321%;"></col><col style="width: 25.0321%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">id</td><td style="height: 29.7969px;">UUID da área possuída pelo provedor</td><td>UUID</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22extents%22"><summary>Response</summary>

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

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>volume</td><td>Volume 4D da área específica</td></tr></tbody></table>

</details>### 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:

<table border="1" class="align-center" id="bkmrk-put-%2Fdss%2Fidentificat" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #fca130;">**PUT**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/dss/identification\_service\_area/{id}</td></tr></tbody></table>

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

<details id="bkmrk-path-param-id-uuid-g"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>id</td><td>UUID da ISA. Deve ser o mesmo UUID devolvido pelo ECO-UTM após a criação da solicitação de voo.  
</td></tr></tbody></table>

</details><details id="bkmrk-body-%7B-%22extents%22%3A-%7B-"><summary>Body</summary>

```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

<table border="1" style="border-collapse: collapse; width: 100%; height: 76.3907px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td style="height: 46.5938px;">volume</td><td style="height: 46.5938px;">Polígono **OU** círculo da área, idêntico ao definido no SARPAS</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">altitude\_lower, altitude\_upper</td><td style="height: 29.7969px;">Altitude geodésica (WSG84, W84) máxima e mínima em metros.

</td></tr><tr><td>time\_start, time\_end</td><td>Horário de início e fim da área. Todos os horários devem estar no timezone Zulo (UTC+0). O único formato suportado é "RFC3339"

</td></tr><tr><td>uss\_base\_url</td><td>URL 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.

</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22subscrib"><summary>Response</summary>

```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

<table border="1" style="border-collapse: collapse; width: 100%; height: 141.781px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 63.3906px;"><td style="height: 63.3906px;">subcribers</td><td style="height: 63.3906px;">Lista dos atuais subcribers dessa área. Caso a lista não esteja vazia, é **OBRIGATÓRIO** o envio da ISA para cada um dos subscribers listados</td></tr><tr style="height: 78.3906px;"><td style="height: 78.3906px;">version</td><td style="height: 78.3906px;">Versão da ISA, gerado pelo DSS, para garantia de integridade. É necessário utilizar esse campo para atualizar ou deletar uma ISA.</td></tr></tbody></table>

</details>

# Cadastro Service Provider

Para os **ensaios de Março/24**, os interessados em fornecer serviços deverão realizar o cadastro de seus respectivos provedores conforme mostrado abaixo. Após a aprovação do cadastro, uma API Key será disponibilizada, liberando acesso aos *endpoints* listados mais adiante.

### Cadastro

Acesse o BR-UTM Forms (URL a definir) e siga os passos:

1. Vá para a área de provedores  
    [![BR-UTM Forms - Página Inicial](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/scaled-1680-/image.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/image.png)
2. O responsável pelo provedor cria uma conta e utiliza as mesmas credenciais para acessos futuros  
    [![BR-UTM Forms - Página de cadastro](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/scaled-1680-/c7Rimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/c7Rimage.png)
3. Acesse o Dashboard  
    [![BR-UTM Forms - Página de acesso](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/scaled-1680-/UYHimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/UYHimage.png)
4. No menu superior, clique em "Your Provider"; ou, nas opções do Dashboard, clique em "Register your provider"[![BR-UTM Forms - Página principal (dashboard)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/scaled-1680-/Knwimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/Knwimage.png)
5. Na tela a qual você foi redirecionado, clique em "Register". Você verá o formulário mostrado abaixo (os campos podem ser diferentes no momento do seu acesso)[![BR-UTM Forms - Página casdastro de provedor](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/scaled-1680-/m6Himage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/m6Himage.png)
6. Após o preenchimento correto do formulário, os dados cadastrais de seu provedor serão enviados para análise[![BR-UTM Forms - Página do provedor](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/scaled-1680-/bUTimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/bUTimage.png)
7. Assim que o cadastro for aprovado, sua API Key será disponibilizada na própria página  
    [![BR-UTM Forms - Página do provedor (status aprovado)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/scaled-1680-/yJoimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-01/yJoimage.png)

### Uso da API Key  


Com sua API Key, você pode gerar um *token* de autenticação para realizar ações programaticamente no ECO-UTM em nome de um usuário:

1. Associe um usuário ao seu provedor, passando o SARPAS ID dele nos parâmetros e sua API Key no *header* da requisição;
2. Crie um *token* de autenticação de usuário, passando o SARPAR ID do usuário e sua API Key no *body* requisição;
3. Aprove o *token* recém-criado, passando o SARPAS ID no parâmetro da requisição.

Com ambas as chaves em mãos, você será capaz de fazer requisições nos *endpoints* listados na seção a seguir.

### Lista de endpoints  


**A lista completa de *endpoints* também está disponível [neste arquivo OpenAPI](https://servicos2.decea.mil.br/br-utm/wiki/attachments/31) e [nesta coleção no Insomina.](https://servicos2.decea.mil.br/br-utm/wiki/attachments/32)**

#### ECO-UTM

A URL base para os seguintes *endpoints* é [`http://kong.icea.decea.mil.br:64235/eco-utm/v1/`](http://kong.icea.decea.mil.br:64235/eco-utm/v1/)

---

<table border="1" class="align-center" id="bkmrk-put-%2Fdss%2Fidentificat" style="border-collapse: collapse; width: 100%; height: 29.8px; border: 0px solid rgb(206, 212, 217);"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(252, 161, 48); border-color: rgb(206, 212, 217);">**PUT**</td><td class="align-left" style="height: 29.8px; border-width: 0px; border-color: rgb(206, 212, 217);">/providers/user\_token/{token}/assign</td></tr></tbody></table>

Associar usuário e provedor

<details id="bkmrk-path-param-id-uuid-g"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-path-param-token-o%C2%A0t"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>token  
</td><td>SARPAS ID do usuário</td></tr></tbody></table>

</details><details id="bkmrk-body-%7B-%22extents%22%3A-%7B-"><summary>Body</summary>

```json
{
  "data": {
    "provider_secret": "your-provider-api-key",
    "provider_id": "kong-consumer-custom-id"
    
  }
}
```

Campos notáveis

<table border="1" style="border-collapse: collapse; width: 100%; height: 220px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">provider\_secret</td><td style="height: 46.6px;">API Key disponível no BR-UTM Forms  
</td></tr><tr style="height: 57.8px;"><td style="height: 57.8px;">provider\_id</td><td style="height: 57.8px;"><span style="color: rgb(0, 0, 0);">\[OPCIONAL\] Custom ID do Kong associado ao Consumer</span>

</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22subscrib"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>200  
</td><td>Success  
</td></tr><tr><td>404  
</td><td>User not found</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fidentificat" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(73, 204, 144);">**POST**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/providers/auth</td></tr></tbody></table>

Gerar token de autenticação

<details id="bkmrk-headers-apikey-api-k"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-body-%7B-%22data%22%3A-%7B-%22pr"><summary>Body</summary>

```json
{
  "data": {
    "provider_secret": "",
    "provider_id": "",
    "user_id": ""
  }
}
```

Campos notáveis

<table border="1" style="border-collapse: collapse; width: 100%; height: 139.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">provider\_secret</td><td style="height: 46.6px;">API Key disponível no BR-UTM Forms  
</td></tr><tr style="height: 57.8px;"><td style="height: 57.8px;">provider\_id</td><td style="height: 57.8px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">\[OPCIONAL\] Custom ID do Kong associado ao Consumer</span></span>

</td></tr><tr style="height: 35.4px;"><td style="height: 35.4px;">user\_id  
</td><td style="height: 35.4px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">SARPAS ID do usuário</span>  
</span>

</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22extents%22"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>204

</td><td>Success</td></tr><tr><td>404

</td><td>User not found  
</td></tr><tr><td>412

</td><td>Invalid provider and user relationship

</td></tr><tr><td>500

</td><td>Internal server error  
</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 75px;"></col><col></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/user-keys/{user-id}</td></tr></tbody></table>

Aprovar token de autenticação do provedor associado ao usuário

<details id="bkmrk-query-parameters-vie"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 193.969px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 113.781px;"><td style="height: 113.781px;">user-id</td><td style="height: 113.781px;"><span style="color: rgb(0, 0, 0);">SARPAR ID do usuário</span>  
</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 193.969px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 113.781px;"><td style="height: 113.781px;">token</td><td style="height: 113.781px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span></span>  
</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%22timestam"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 31.3833px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 31.3833px;"><td style="height: 31.3833px;">200</td><td style="height: 31.3833px;">Success  
</td></tr><tr><td>500  
</td><td>Error  
</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fpilots%2Fflights" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(73, 204, 144);">**POST**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/pilots/flights</td></tr></tbody></table>

Cria uma solicitação de voo para um espaço aéreo descrito na requisição

<details id="bkmrk-headers-apikey-api-k-1"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-1"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">token</td><td style="height: 29.8px;">Bearer token gerado  
</td></tr></tbody></table>

</details><details id="bkmrk-body-%7B-%22data%22%3A-%7B-%22ty"><summary>Body</summary>

```json
{
    "data": {
        "type": "/pilots/flights",
        "attributes": {
            "airplane_id": "1ed0e6d9-e88e-6812-bd5f-0242ac12001c",
            "operation": {
                "aircrafts": [
                   {
                        "id": 4,
                        "uuid": "1ed0e6d9-e88e-6812-bd5f-0242ac12001c"
                   }
                ],
                "flight": {
                    "pilots": ["QGRK"],
                    "date": {
                        "start_day": "2025-12-16",
                        "start_hour": "08:00",
                        "finish_day": "2025-12-16",
                        "finish_hour": "09:00"
                    },
                    "type": "VLOS",
                    "observations": "teste",
                    "communication": {
                        "id": "1",
                        "ats_call_type": "vhf-fm",
                        "rpa_call_type": "vhf-am",
                        "rps": [
                            {
                                "name": "1",
                                "lat": "1",
                                "lng": "1",
                                "contact_info": "1",
                                "radius": 100
                            }
                        ]
                    },
                    "sarpas_code": "OJMN",
                    "area": {
                        "asa_id": "283797ce-73e9-4395-adcf-6c6119b3f20f",
                        "takeoff_point": [-34.993236064910896,-8.02209168418088],
                        "landing_point": [-34.993236064910896,-8.02209168418088],
                        "required_route": {
                            "geojson": {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Polygon",
        "coordinates": [
					[
						[
							-24.080093705511494,
							-49.0539316478104
						],
						[
							-24.081153158442177,
							-49.05006533240442
						],
						[
							-24.08503406183282,
							-49.052976909391695
						],
						[
							-24.082881359600847,
							-49.055986687210066
						],
						[
							-24.080093705511494,
							-49.0539316478104
						]
					]
				]
      }
    }
                            },
                            "flight_type": "height",
                            "flight_distance": 100
                        },
                        "documents": []
                    },
                    "basic_information": {
                        "name": "teste 2",
                        "type": "101",
                        "agree_terms": 1
                    }
                }
            }
        }
    }
```

Campos notáveis

<table border="1" style="border-collapse: collapse; width: 100%; height: 139.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">provider\_secret</td><td style="height: 46.6px;">API Key disponível no BR-UTM Forms  
</td></tr><tr style="height: 57.8px;"><td style="height: 57.8px;">provider\_id</td><td style="height: 57.8px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">\[OPCIONAL\] Custom ID do Kong associado ao Consumer</span></span>

</td></tr><tr style="height: 35.4px;"><td style="height: 35.4px;">user\_id  
</td><td style="height: 35.4px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">SARPAR ID do usuário</span>  
</span>

</td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%7D-%C2%A0"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>200  
</td><td>Success</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fbypass%2Fcategori" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/bypass/categorize/{solicitationProtocol}</td></tr></tbody></table>

Categoriza uma solicitação de voo por número de protocolo

<details id="bkmrk-headers-apikey-api-k-2"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-2"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">token</td><td style="height: 29.8px;"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span></td></tr></tbody></table>

</details><details id="bkmrk-path-param-solicitat"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">solicitationProtocol</td><td style="height: 10px;"><span style="color: rgb(0, 0, 0);">Número de protocolo da solicitação</span></td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%7D-%C2%A0-1"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>200  
</td><td>Success</td></tr><tr><td>404  
</td><td>Solicitation not found  
</td></tr><tr><td>500  
</td><td>Error  
</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fbypass%2Fanalyze%2F" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/bypass/analyze/{solicitationProtocol}</td></tr></tbody></table>

Analisa uma solicitação de voo por número de protocolo

<details id="bkmrk-headers-apikey-api-k-3"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-3"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">token</td><td style="height: 10px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span></span></td></tr></tbody></table>

</details><details id="bkmrk-path-param-solicitat-1"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">solicitationProtocol</td><td style="height: 10px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Número de protocolo da solicitação</span></span></td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%7D-%C2%A0-2"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>200  
</td><td>Success</td></tr><tr><td>404  
</td><td>Solicitation protocol not found  
</td></tr><tr><td>500  
</td><td>Error  
</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fuser-aircraft" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/user-aircraft  
</td></tr></tbody></table>

Busca todas as aeronaves de um usuário identificado pelo token de sessão

<details id="bkmrk-headers-apikey-api-k-4"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-4"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">token</td><td style="height: 10px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span></span></td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%7D-%C2%A0-3"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>200  
</td><td>Success</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fshared-aircraft" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**  
</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/shared-aircraft-user  
</td></tr></tbody></table>

Busca todas as aeronaves compartilhadas com um usuário identificado pelo token de sessão

<details id="bkmrk-headers-apikey-api-k-5"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-5"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">token</td><td style="height: 10px;"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span></td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%7D-%C2%A0-4"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>200  
</td><td>Success</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-post-%2Fuser%2Fflight%2Fai" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(73, 204, 144);">**POST**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/user/flight/aircrafts</td></tr></tbody></table>

Busca todas as aeronaves em voo, opcionalmente incluindo compartilhadas, de um usuário identificado pelo ID enviado na requisição

<details id="bkmrk-headers-apikey-api-k-6"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-6"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">token</td><td style="height: 29.8px;"><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span></span></td></tr></tbody></table>

</details><details id="bkmrk-body-%7B-%22user_informa"><summary>Body</summary>

```json
{
  "user_information_id": "1ed4b29e-8fe0-60aa-aefd-0242ac120019",
  "shared": true
}
```

Campos notáveis

<table border="1" style="border-collapse: collapse; width: 100%; height: 139.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">user\_information\_id</td><td style="height: 46.6px;"><span style="color: rgb(0, 0, 0);">SARPAS ID do usuário</span>  
</td></tr><tr><td>shared  
</td><td><span style="color: rgb(0, 0, 0);">\[OPCIONAL\] Incluir aeronaves compartilhadas  
</span></td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-%7D-%C2%A0-5"><summary>Response</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>200  
</td><td>Success</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fflight-status" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**  
</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/flight-status  
</td></tr></tbody></table>

Lista os status do voo de um usuário identificado pelo token de sessão

<details id="bkmrk-headers-apikey-api-k-8"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-8"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">token</td><td style="height: 10px;"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span>  
</td></tr></tbody></table>

</details><details id="bkmrk-response-%C2%A0-1"><summary>Response</summary>

200

</details>#### ASA

A URL base para os seguintes *endpoints* é `<a href="http://kong.icea.decea.mil.br:64236/api/">http://kong.icea.decea.mil.br:64236/api/</a>`

---

<table border="1" class="align-center" id="bkmrk-post-%2Fpolygon%2F%7Bpolyg" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(73, 204, 144);">**POST**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/polygon/{polygonId}/{userUuid}</td></tr></tbody></table>

Cria uma área no ASA dados os identificadores do polígono e usuário

<details id="bkmrk-headers-apikey-api-k-9"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-9"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 29.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px;">token</td><td style="height: 29.8px;"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span>  
</td></tr></tbody></table>

</details><details id="bkmrk-path-param-polygonid"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">polygonId</td><td style="height: 10px;">ID (definido pelo solicitante) do polígono criado  
</td></tr><tr><td>userUuid  
</td><td>SARPAS ID do usuário  
</td></tr></tbody></table>

</details><details id="bkmrk-body-%7B-%22type%22%3A-%22feat"><summary>Body</summary>

```json
{
    "type": "Feature",
    "properties": {
      "poligonoId": "283797ce-73e9-4395-adcf-6c6119b3f20f",
      "perfil": "1",
      "datasHoras": "{\"date1\":\"2023-11-30\",\"date2\":\"2023-11-30\",\"hora1\":\"14:00\",\"hora2\":\"15:00\"}",
      "elevacoes": {
        "criarAreaMaximo": 10,
        "criarAreaMinimo": 0,
        "criarAreaMaximoFt": 32.8084,
        "criarAreaMinimoFt": 0,
        "criarAreaNome": "",
        "criarAreaDescricao": "",
        "alturaEditavelMetros": "10",
        "alturaEditavelPes": 32.8084,
        "dataInicio": "2025-12-12",
        "dataTermino": "2025-12-12",
        "horaInicio": "08:00",
        "horaTermino": "09:00",
        "update": []
      },
      "raio": 0,
      "altura": "10",
      "formato": "poligono",
      "contextoId": 1,
      "pontoDecolagem": {
        "latLng": {
          "lat": -24.098672973607677,
          "lng": -48.909985432572751,
          "valido": true
        },
        "unidade": "gms",
        "elevationM": 10,
        "elevationFt": 32.8084,
        "valido": true
      }
    },
    "geometry": {
      "type": "Polygon",
      "coordinates": [
					[
						[
							-24.080093705511494,
							-49.0539316478104
						],
						[
							-24.081153158442177,
							-49.05006533240442
						],
						[
							-24.08503406183282,
							-49.052976909391695
						],
						[
							-24.082881359600847,
							-49.055986687210066
						],
						[
							-24.080093705511494,
							-49.0539316478104
						]
					]
				]
    }
  }
```

Campos notáveis

<table border="1" style="border-collapse: collapse; width: 100%; height: 139.8px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 46.6px;"><td style="height: 46.6px;">  
</td><td style="height: 46.6px;"> </td></tr></tbody></table>

</details><details id="bkmrk-response-%7B-voo_id%3A-s"><summary>Response</summary>

```json
{
  voo_id: string
}
```

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr><td>voo\_id</td><td>  
</td></tr></tbody></table>

</details>---

<table border="1" class="align-center" id="bkmrk-get-%2Fpolygon%2F%7Bsolici" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(97, 175, 254);">**GET**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/polygon/{solicitationProtocol}/result</td></tr></tbody></table>

<span style="color: rgb(0, 0, 0);">Obter resultado da solicitação de área</span>

<details id="bkmrk-headers-apikey-api-k-10"><summary>Headers</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>apikey</td><td>API Key disponível no BR-UTM Forms</td></tr></tbody></table>

</details><details id="bkmrk-bearer-token-que-tok-10"><summary>Bearer</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">token</td><td style="height: 10px;"><span style="color: rgb(0, 0, 0);">Bearer token gerado</span>  
</td></tr></tbody></table>

</details><details id="bkmrk-path-param-solicitat-2"><summary>Path Param</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 10px;"><colgroup><col style="width: 50.0642%;"></col><col style="width: 50.0642%;"></col></colgroup><tbody><tr style="height: 10px;"><td style="height: 10px;">solicitationProtocol</td><td style="height: 10px;">Número de protocolo da solicitação de área</td></tr></tbody></table>

</details><details id="bkmrk-response-200-ok"><summary>Response</summary>

200 OK

</details>

# Onboarding Display Provider

No contexto do serviço de Tracking, um Display Provider é um provedor USS que tem objetivo de exibir a posição de drones em tempo real para seus usuários.

### Pré-requisitos técnicos

Para um USS se tornar um provedor de display 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 requisições
2. Possuir App para visualização de posição de drones

### Autenticação

Para o ensaio, a autenticação será feita em um serviço OAuth centralizado do DECEA, ainda a ser descrito.

### 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/uastech/standards/tree/astm\_rid\_api\_2.1/remoteid](https://github.com/uastech/standards/tree/astm_rid_api_2.1/remoteid)

Conforme o padrão OpenAPI acima, os endpoints que o Display Provider precisará prover:

<table border="1" class="align-center" id="bkmrk-get-%2Fuss%2Fflights" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.8px; border-width: 0px;"><colgroup><col style="width: 75px;"></col><col></col></colgroup><tbody><tr style="height: 29.8px;"><td style="height: 29.8px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: rgb(73, 204, 144);">**POST**</td><td class="align-left" style="height: 29.8px; border-width: 0px;">/uss/identification\_service\_areas/{id}</td></tr></tbody></table>

<details id="bkmrk-path-parameters-id-u-1"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>id</td><td>UUID da ISA</td></tr></tbody></table>

</details><details id="bkmrk-request-body-%7B-%22serv"><summary>Request Body</summary>

</details>### Interação com DSS

O Service Provider, conforme definido no padrão ASTM3411-22a, deve criar entidades de Subscription em uma área específica, para encontrar os atuais Service Providers, e também para receberem notificações caso novos provedores se registrem na área. Os endpoints expostos pelo DSS estão descritos no arquivo OpenAPI descrito acima.

Como exemplo, o endpoint abaixo é para criação de Subscriptions:

<table border="1" class="align-center" id="bkmrk-put-%2Fdss%2Fidentificat" style="font-family: var(--font-body); font-size: 14px; width: 100%; height: 29.7969px; border-width: 0px;"><colgroup><col style="width: 9.25926%;"></col><col style="width: 90.7407%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px; border-width: 0px; background-clip: padding-box; color: white; border-radius: 5px; background-color: #fca130;">**PUT**</td><td class="align-left" style="height: 29.7969px; border-width: 0px;">/dss/subscriptions/{id}</td></tr></tbody></table>

<details id="bkmrk-path-parameters-id-u"><summary>Path Parameters</summary>

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>id</td><td>UUID da Subscription, criado pelo Display Provider</td></tr></tbody></table>

</details><details id="bkmrk-request-body-%7B-%22exte"><summary>Request Body</summary>

```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

<table border="1" style="border-collapse: collapse; width: 100%; height: 76.3907px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td style="height: 46.5938px;">volume</td><td style="height: 46.5938px;">Polígono **OU** círculo da área, idêntico ao definido no SARPAS</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">altitude\_lower, altitude\_upper</td><td style="height: 29.7969px;">Altitude geodésica (WSG84, W84) máxima e mínima em metros.

</td></tr><tr><td>time\_start, time\_end</td><td>Horário de início e fim da área. Todos os horários devem estar no timezone Zulo (UTC+0). O único formato suportado é "RFC3339"

</td></tr><tr><td>uss\_base\_url</td><td>URL 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.

</td></tr></tbody></table>

</details><details id="bkmrk-response-body-%7B-%22ser"><summary>Response Body</summary>

```json
{
  "service_areas": [],
  "subscription": {
    "id": "string",
    "uss_base_url": "https://example.com/rid",
    "owner": "myuss",
    "notification_index": 0,
    "time_end": {
      "value": "1985-04-12T23:20:50.52Z",
      "format": "RFC3339"
    },
    "time_start": {
      "value": "1985-04-12T23:20:50.52Z",
      "format": "RFC3339"
    },
    "version": "string"
  }
}
```

<table border="1" style="border-collapse: collapse; width: 100%; height: 122.984px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 63.3906px;"><td style="height: 63.3906px;">service\_areas</td><td style="height: 63.3906px;">Lista de ISAs já existentes no volume 4D. Caso a lista não esteja vazia, o Display Provider deve solicitar os dados de telemetria para as URLs definidas na lista</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">version</td><td style="height: 29.7969px;">Versão da Subscription, gerado pelo DSS, para garantia de integridade. É necessário utilizar esse campo para atualizar ou deletar uma Subscription.</td></tr></tbody></table>

</details>

# Cenários

#### Cenário 1:

Apenas um Service provider e nenhum Display provider na área durante o Voo

<div drawio-diagram="255"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-02/drawing-3-1709118152.png" alt=""/></div>

#### Cenário 2:

Service provider cria área onde já existe uma Subscription (Display Provider)

<div drawio-diagram="115"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702578626.png" alt=""/></div>

#### Cenário 3:

Criação de Subscription onde já exista ISA

<div drawio-diagram="116"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702578754.png" alt=""/></div>

#### Cenário 4:

Usuário do Display Provider deseja visualizar uma área. Nessa área já existe um Service Provider (USS 1), e durante a exibição, um novo Service Provider (USS 2) inicia operações na área. Esse cenário foi adaptado da documentação do InterUSS DSS.

<div drawio-diagram="128"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2023-12/drawing-3-1702692143.png" alt=""/></div>

# [TP] - Strategic Deconfliction

- Deconfliction OpenAPI: https://github.com/dp-icea/Protocols/tree/main/utm
- Injection OpenAPI: [https://github.com/interuss/automated\_testing\_interfaces/tree/4e07f46eb4452da761fb1658d3775d801d19312b/flight\_planning/v1](https://github.com/interuss/automated_testing_interfaces/tree/4e07f46eb4452da761fb1658d3775d801d19312b/flight_planning/v1)

### SCD  


#### Case scd-1 - Isolated OIR:

<details id="bkmrk-oir-isolada-json-%5B00"><summary>Isolated OIR</summary>

<div drawio-diagram="612"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-3-1731433158.png" alt=""/></div>

<details id="bkmrk-json-%5B000%5D-%7B-%22chave%22"><summary>JSON \[000\]</summary>

```json
{
  "chave":"valor"
}
```

</details><details id="bkmrk-json-%5B020%5D-%7B-%22chave%22"><summary>JSON \[020\]</summary>

```json
{
  "operational_intent_reference": {
    "id": "2f8343be-6482-4d1b-a474-16847e01af1e",
    "flight_type": "VLOS",
    "manager": "uss1",
    "uss_availability": "Unknown",
    "version": 1,
    "state": "Accepted",
    "ovn": "9d158f59-80b7-4c11-9c0c-8a2b4d936b2d",
    "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://uss.example.com/utm",
    "subscription_id": "78ea3fe8-71c2-4f5c-9b44-9c02f5563c6f"
  }
}
```

</details><details id="bkmrk-json-%5B040%5D-%7B-%22chave%22"><summary>JSON \[040\]</summary>

```json
{
  "operational_intent": {
    "reference": {
      "id": "2f8343be-6482-4d1b-a474-16847e01af1e",
      "flight_type": "VLOS",
      "manager": "uss1",
      "uss_availability": "Unknown",
      "version": 1,
      "state": "Accepted",
      "ovn": "9d158f59-80b7-4c11-9c0c-8a2b4d936b2d",
      "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://uss.example.com/utm",
      "subscription_id": "78ea3fe8-71c2-4f5c-9b44-9c02f5563c6f"
    },
    "details": {
      "volumes": [],
      "off_nominal_volumes": [],
      "priority": 0
    }
  }
}
```

</details></details>##### Case scd-2 - Conflict OIR:

<details id="bkmrk-conflict-oir---not-i"><summary>Conflict OIR - Not implemented</summary>

<div drawio-diagram="613"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-3-1731433828.png" alt=""/></div>

</details>#### Case auth-1 - Successful Auth

<details id="bkmrk-successfull-auth-%C2%A0"><summary>Successful Auth</summary>

<div drawio-diagram="605"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-3-1731094874.png" alt=""/></div>

</details>#### Case auth-2 - Invalid Scope

<details id="bkmrk-invalid-scope-%C2%A0"><summary>Invalid Scope</summary>

<div drawio-diagram="607"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-3-1731095134.png" alt=""/></div>

</details>#### Case auth-3 - Invalid audience

<details id="bkmrk-invalid-audience-%C2%A0"><summary>Invalid audience</summary>

<div drawio-diagram="608"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-3-1731095250.png" alt=""/></div>

</details>#### Case auth-4 - Invalid token signature

<details id="bkmrk-invalid-token-signat"><summary>Invalid token signature</summary>

In this test, the director creates an invalid token, that was not issued by an authorized token provider.

<div drawio-diagram="609"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-3-1731095426.png" alt=""/></div>

</details>#### Case OIR - OIR activation

<details id="bkmrk-invalid-token-signat-1"><summary>OIR activation</summary>

<div drawio-diagram="615"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-65-1731439215.png" alt=""/></div>

<details><summary>JSON 020</summary>

```json
{
  "operational_intent_reference": {
    "id": "2f8343be-6482-4d1b-a474-16847e01af1e",
    "flight_type": "VLOS",
    "manager": "uss1",
    "uss_availability": "Unknown",
    "version": 1,
    "state": "Accepted",
    "ovn": "9d158f59-80b7-4c11-9c0c-8a2b4d936b2d",
    "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://uss.example.com/utm",
    "subscription_id": "78ea3fe8-71c2-4f5c-9b44-9c02f5563c6f"
  }
}
```

</details><details><summary>JSON 050</summary>

```json
{
  "operational_intent_reference": {
    "id": "2f8343be-6482-4d1b-a474-16847e01af1e",
    "flight_type": "VLOS",
    "manager": "uss1",
    "uss_availability": "Unknown",
    "version": 1,
    "state": "Accepted",
    "ovn": "9d158f59-80b7-4c11-9c0c-8a2b4d936b2d",
    "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://uss.example.com/utm",
    "subscription_id": "78ea3fe8-71c2-4f5c-9b44-9c02f5563c6f"
  }
}
```

</details></details>##### Case OIR - Conflict Constraint:

<details id="bkmrk-conflict-constraint"><summary>Conflict Constraint</summary>

<div drawio-diagram="616"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-65-1731439584.png" alt=""/></div>

</details>#### Case ISA 1 - without subscription

<details id="bkmrk-conflict-constraint-1"><summary>Conflict Constraint</summary>

<div drawio-diagram="619"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-46-1731503030.png" alt=""/></div>

</details>#### Case ISA 2 - with subscription

<details id="bkmrk-isa-com-subscription"><summary>ISA com Subscription</summary>

<div drawio-diagram="626"><img src="https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/drawio/2024-11/drawing-46-1731507874.png" alt=""/></div>

<details><summary>JSON \[000\]</summary>

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

</details><details><summary>JSON \[010\]</summary>

```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": 100000,
        "reference": "W84",
        "units": "M"
      },
      "altitude_upper": {
        "value": 100000,
        "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://uss.example.com/utm",
  "notify_for_operational_intents": false,
  "notify_for_constraints": false
}
```

</details><details><summary>JSON \[020\]</summary>

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

</details><details><summary>JSON \[050\]</summary>

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

</details></details>

# Requisitos Técnicos USP - N1C1

##### **<span style="background-color: rgb(194, 224, 244);">Requisitos Técnicos</span>** para os Provedores de Serviço UAS, mapeados para o N1C1 (2025)  


<table border="1" id="bkmrk-legenda-servi%C3%A7o-requ" style="border-collapse: collapse; width: 100%; height: 72.85px;"><colgroup><col style="width: 9.81489%;"></col><col style="width: 90.3087%;"></col></colgroup><tbody><tr style="height: 72.85px;"><td style="height: 72.85px;">Legenda

</td><td style="height: 72.85px;">1. Serviço 
    - Requisito Alto Nível 
        - <span style="background-color: rgb(194, 224, 244);">Requisitos Técnicos</span>

</td></tr></tbody></table>

1. Comunicação de Atividades 
    - o USP deve ser capaz de registrar e oferecer as intenções de voo, além de armazenar o histórico de atividades 
        - <span style="background-color: rgb(251, 238, 184);"><span style="background-color: rgb(194, 224, 244);">Inserir OIR</span></span>
        - <span style="background-color: rgb(194, 224, 244);">Armazenar Logs de Operações</span>
        - <span style="background-color: rgb(194, 224, 244);">Ser capaz de se inscrever (criar subscription) na área de operação do DSS</span>
2. Autorização do espaço aéreo 
    - o USP deve ser capaz de processar as solicitações de voo 
        - <span style="background-color: rgb(194, 224, 244);">Ser homologado como Provedor membro do BR-UTM  
            </span>
            - <span style="background-color: rgb(194, 224, 244);">Cumprir os requisitos</span>
            - <span style="background-color: rgb(194, 224, 244);">Completar o processo de Onboarding BR-UTM</span>
3. Gestão de conflitos e separação 
    - O USP deve ser capaz de identificar e bloquear a intenção de operação numa área que já esteja sendo utilizada, além de prover o geocaging 
        - <span style="background-color: rgb(194, 224, 244);">Consultar OIR existentes</span>
        - <span style="background-color: rgb(194, 224, 244);">Consultar Restrições</span>
        - <span style="background-color: rgb(194, 224, 244);">Garantir Geocaging</span>
4. Descoberta 
    - O USP deve ser capaz de consumir as informações disponibilizadas nos serviços de descoberta e sincronização 
        - <span style="background-color: rgb(194, 224, 244);">Ser capaz de se comunicar com o DSS</span><span style="background-color: rgb(194, 224, 244);">  
            </span>
        - <span style="background-color: rgb(194, 224, 244);">Possuir token gerado pelo Provedor de autenticação do BR-UTM para garantir autenticidade das comunicações</span>
5. Planejamento de voo 
    - o USP deve disponibilizar ferramentas para o planejamento da operação durante a solicitação 
        - <span style="background-color: rgb(194, 224, 244);">Fornecer uma interface para o operador planejar sua operação</span>
        - <span style="background-color: rgb(194, 224, 244);">Criar OIR no padrão ASTM no DSS  
            </span>
6. Identificação 
    - O USP deve ser capaz de consumir as informações de cadastro de aeronaves do ecoUTM 
        - <span style="background-color: rgb(194, 224, 244);">Enviar os dados de identificação SISANT nas solicitações do USP, conforme padrão ASTM</span>
        - <span style="background-color: rgb(194, 224, 244);">Ser capaz de se autenticar no BR-UTM, e garantir a autenticidade de sua comunicação com outros USP</span>
7. Registro 
    - O USP deve ser capaz de informar ao DSS o SISANT e dados dos envolvidos   
        
        - <span style="background-color: rgb(194, 224, 244);">Ter um registro dentro do sistema BR-UTM que contenha os dados do USP</span>
        - <span style="background-color: rgb(194, 224, 244);">Possuir token gerado pelo Provedor de autenticação do BR-UTM para garantir autenticidade das comunicações</span>
8. Gerenciamento de restrições 
    - o USP deve ser capaz de aplicar as restrições recebidas do DSS 
        - <span style="background-color: rgb(194, 224, 244);">Se comunicar com os Provedores de restrições</span>
        - <span style="background-color: rgb(194, 224, 244);">Ser capaz de ler as informações de restrição no padrão ASTM</span>
        - <span style="background-color: rgb(194, 224, 244);">Ser capaz de restringir/notificar as operações dos seus operadores com base nas restrições</span>
9. Rastreamento e localização 
    - o USP deve ter a capacidade de notificação da ocupação efetiva da área proposta 
        - <span style="background-color: rgb(194, 224, 244);">Prover informações de Remote Id</span>
        - <span style="background-color: rgb(194, 224, 244);">Ser capaz de criar ISA (Identification Service Area) no padrão ASTM</span>
        - <span style="background-color: rgb(194, 224, 244);">Ser capaz de obter tracking em tempo real de seus UAV</span>

# LGPD

Documentações e dados a respeito da LGPD

# Comunicação com Ouvidoria ANPD

**<span style="mso-fareast-font-family: 'Times New Roman'; color: black;">De:</span>**<span style="mso-fareast-font-family: 'Times New Roman'; color: black;"> Vinicius Juvinski &lt;<vinicius@solve4me.com.br>&gt;  
**Enviado:** quinta-feira, 14 de dezembro de 2023 09:56  
**Para:** ANPD - Ouvidoria &lt;<ouvidoria@anpd.gov.br>&gt;  
**Assunto:** Informações sobre a LGPD e Sistema de controle de tráfego aéreo do DECEA</span><span style="mso-fareast-font-family: 'Times New Roman';"> </span>

<span style="mso-fareast-font-family: 'Times New Roman';"> </span>

<span style="color: black;">Bom dia,</span>

<span style="color: black;"> </span>

<span style="color: black;">Faço parte da comissão que está desenvolvendo as premissas do sistema BR-UTM – é o novo sistema de controle de tráfego aéreo brasileiro que inclui também a parte de drones neste sistema.</span>

<span style="color: black;">Contudo, na concepção deste sistema, existem alguns papéis, o usuário/operador (piloto de drone), o Provedor(empresa de iniciativa privada que opera a área e responsável por todas as aeronaves que voam naquele espaço) e o DECEA.</span>

<span style="color: black;">Para que o sistema funcione, o Provedor deve enviar para o DECEA uma série de informações de identificação e rastreio dos drones voados pelo usuário/operador. Além destes dados serem enviados para o DECEA, o sistema prevê o compartilhamento destes dados com as autoridades (Policia, Policia federal) e surgiu a questão de o que se faz necessário entre as partes para que esse transito de informações não inflija a LGPD.</span>

<span style="color: black;">Somente o termo de uso informando que existe esse compartilhamento de informações já é o suficiente para que este novo sistema esteja de acordo com a LGPD?</span>

<span style="color: black;">Quais mecanismos se fazem necessário para que tudo esteja de acordo com a LGPD.</span>

<span style="color: black;"> </span>

<span style="color: black;">Obrigado</span>

<span style="color: black;"> </span>

<span style="color: black;">Tomo a liberdade de adicionar a página do projeto caso queiram mais informações</span>

<span style="color: black;">[https://www.decea.mil.br/?i=midia-e-informacao&amp;p=pg\_noticia&amp;materia=reuniao-do-projeto-br-utm-valida-desafios-e-avanca-em-propostas-de-abordagem](https://www.decea.mil.br/?i=midia-e-informacao&p=pg_noticia&materia=reuniao-do-projeto-br-utm-valida-desafios-e-avanca-em-propostas-de-abordagem)</span>

<span style="color: black;">Resposta:</span>

<span style="font-size: 12.0pt; color: #242424;">Prezado Vinicius,</span>

<span style="font-size: 12.0pt; color: #242424;">Em atenção à sua mensagem, pontuamos que a</span><span style="color: #242424;"> </span><span style="font-size: 12.0pt; color: black;">Autoridade Nacional de Proteção de Dados (ANPD)</span><span style="color: #242424;"> </span><span style="font-size: 12.0pt; color: #242424;">não tem realizad</span><span style="color: #242424;">o</span><span style="font-size: 12.0pt; color: #242424;"> análises nem emitido orientações</span><span style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif; color: #242424;"> </span><span style="font-size: 12.0pt; color: #242424;">quanto ao enquadramento legal de processos ou atividades específicas nas hipóteses de tratamento previstas na Lei Geral de Proteção de Dados Pessoais - LGPD (Lei nº 13.709, de 14 de agosto de 2018)</span><span style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif; color: #242424;">. </span><span style="font-size: 12.0pt; color: #242424;">Nesse sentido, não dispomos de resposta específica à consulta apresentada.</span><span style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif; color: #242424;"> </span>

<span style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif; color: #242424;"> </span>

<span style="font-size: 12.0pt; color: #242424;">Destacamos que, dentro de suas realidades, os agentes de tratamento devem adotar as providências destinadas à adequação à LGPD, que incluem o mapeamento e o registro das operações específicas de tratamento de dados pessoais que realizarem, assim como a identificação das respectivas bases legais e finalidades específicas. Essa identificação deve ser realizada com base nas circunstâncias e especificidades dos tratamentos de dados realizados. </span>

<span style="font-size: 10.5pt; color: black;">   
</span><span style="font-size: 12.0pt; color: #242424;">Pontuamos que no site da ANPD podem ser consultadas respostas a Perguntas Frequentes (</span><span style="font-size: 12.0pt; color: black;">  
[https://www.gov.br/anpd/pt-br/acesso-a-informacao/perguntas-frequentes-2013-anpd](https://www.gov.br/anpd/pt-br/acesso-a-informacao/perguntas-frequentes-2013-anpd)</span><span style="font-size: 12.0pt; color: blue;">),</span><span style="font-size: 12.0pt; color: black;"> e que futuros entendimentos desta Autoridade relativos à interpretação da LGPD também serão divulgados em nosso site</span><span style="font-size: 12.0pt; color: blue;"> (</span><span style="font-size: 12.0pt; color: black;">[https://www.gov.br/anpd/pt-br/documentos-e-publicacoes)](https://www.gov.br/anpd/pt-br/documentos-e-publicacoes))</span><span style="font-size: 12.0pt; color: blue;">. </span><span style="font-size: 12.0pt; color: #242424;"> </span><span style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif; color: #242424;"> </span>

<span style="font-size: 10.5pt; font-family: 'Segoe UI',sans-serif; color: #242424;"> </span>

<span style="font-size: 12.0pt; color: #242424;">Cabe ressaltar que os temas que serão objeto de regulamentação no biênio 2023-2024 estão previstos na Agenda Regulatória da ANPD, aprovada pela Portaria nº 35, de 4 de novembro de 2022 (</span><span style="font-size: 12.0pt; color: black;">[https://www.in.gov.br/en/web/dou/-/portaria-anpd-n-35-de-4-de-novembro-de-2022-442057885](https://www.in.gov.br/en/web/dou/-/portaria-anpd-n-35-de-4-de-novembro-de-2022-442057885)</span><span style="font-size: 12.0pt; color: blue;">). </span><span style="font-size: 12.0pt; color: black;">No item 7 do referido documento está prevista a edição de Guia específico sobre as hipóteses legais de tratamento de dados pessoais. </span>

<span style="font-size: 12.0pt; color: #242424;"> </span>

<span style="font-size: 12.0pt; color: #242424;">Agradecemos o seu contato e permanecemos à disposição.</span>

<span style="font-size: 12.0pt; font-family: 'Aptos',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: black;"> </span>

<span style="font-size: 12.0pt; font-family: 'Aptos',sans-serif; mso-fareast-font-family: 'Times New Roman'; color: black;"> </span>

<span style="font-size: 12.0pt; color: black;">Atenciosamente, </span>

<span style="font-size: 12.0pt; color: black;"> ![](file:///C:/Users/Juvinski/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png)</span>

<span style="color: black;"><span style="font-size: 12.0pt; font-family: 'Calibri',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; color: black; mso-ansi-language: PT-BR; mso-fareast-language: PT-BR; mso-bidi-language: AR-SA;">Ouvidoria   
**Autoridade Nacional de Proteção de Dados**</span></span>

# Cenários Operacionais

### Descrever a proposta de cenários operacionais para teste no ensaio de Março/2024.

#### Variáveis que serão testadas nos cenários:

- - Número de USS operando simultaneamente (1, 2 USS).
    - Sem e com conflito de intenção de operação.
    - Sem e com restrições de voo.
    - Conflito entre intenções de operação: 
        - VLOS e BVLOS.
        - BVLOS e BVLOS.

#### Detalhamento dos cenários a serem ensaiados:

- Cenário 0.0:  
    
    - Objetivo: cenário baseline - similar à situação atual para testar interface dos USS.
    - 1 USS
    - Sem conflito de rota
    - Sem restrições
    - VLOS
    - Detalhamento do cenário: 
        - Ensaio 0.0.0: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Solicitar acesso ao espaço aéreo UTM (4D).
            - Receber autorização para uso do espaço aéreo (4D).
            - Realizar voo VLOS.
            - Liberar espaço utilizado para próxima utilização.
- Cenário 0.1: 
    - Objetivo: ensaio igual ao cenário 0.0, incluindo restrições de voo.
    - 1 USS
    - Sem conflito de rota
    - Com restrições
    - VLOS
    - Detalhamento do cenário: 
        - Ensaio 0.1.0: Solicitação de voo com restrição pré-existente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Solicitar acesso ao espaço aéreo UTM (4D).
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Receber autorização para uso do espaço aéreo (4D).
            - Realizar voo VLOS.
            - Liberar espaço utilizado para próxima utilização.
        - Ensaio 0.1.1: Solicitação de voo com restrição imposta posteriormente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Solicitar acesso ao espaço aéreo UTM (4D).
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Receber autorização para uso do espaço aéreo (4D).
            - Provedor de serviços recebe restrição no espaço aéreo UTM, em conflito com o espaço aéreo previamente autorizado.
            - Provedor de serviços informa ao operador referente à restrição no espaço aéreo.
            - Operador aborta a missão (caso ainda não tenha iniciado o voo), ou retorna à base (caso já tenha iniciado o voo).
            - Liberar espaço utilizado para próxima utilização.
- Cenário 1.0: 
    - Objetivo: aumento da complexidade, incluindo conflito de rota VLOS e BVLOS.
    - 1 USS
    - Com conflito de rota
    - Sem restrições
    - VLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 1.0.0: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), um para voo VLOS e outro para voo BVLOS, para o mesmo provedor de serviços. Depois invertem a ordem da solicitação.
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
- Cenário 1.1: 
    - Objetivo: ensaio igual ao cenário 1.0, incluindo restrições de voo.
    - 1 USS
    - Com conflito de rota
    - Com restrições
    - VLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 1.1.0: Solicitação de voo com restrição pré-existente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), um para voo VLOS e outro para voo BVLOS, para o mesmo provedor de serviços. Depois invertem a ordem da solicitação.
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
        - Ensaio 1.1.1: Solicitação de voo com restrição imposta posteriormente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), um para voo VLOS e outro para voo BVLOS, para o mesmo provedor de serviços. Depois invertem a ordem da solicitação.
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Provedor de serviços recebe restrição no espaço aéreo UTM, em conflito com o espaço aéreo previamente autorizado.
            - Provedor de serviços informa aos operadores referente à restrição no espaço aéreo.
            - Operadores abortam a missão (caso ainda não tenha iniciado o voo), ou retornam à base (caso já tenha iniciado o voo).
            - Liberar espaço utilizado para próxima utilização.
- Cenário 2.0: 
    - Objetivo: aumento da complexidade, incluindo conflito de rota BVLOS e BVLOS.
    - 1 USS
    - Com conflito de rota
    - Sem restrições
    - BVLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 2.0.0: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), ambos para voos BVLOS, para o mesmo provedor de serviços.
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
- Cenário 2.1: 
    - Objetivo: ensaio igual ao cenário 2.0, incluindo restrições de voo.
    - 1 USS
    - Com conflito de rota
    - Com restrições
    - BVLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 2.1.0: Solicitação de voo com restrição pré-existente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), ambos para voos BVLOS, para o mesmo provedor de serviços.
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
        - Ensaio 2.1.1: Solicitação de voo com restrição imposta posteriormente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), ambos para voos BVLOS, para o mesmo provedor de serviços.
            - Verificar restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Provedor de serviços recebe restrição no espaço aéreo UTM, em conflito com o espaço aéreo previamente autorizado.
            - Provedor de serviços informa aos operadores referente à restrição no espaço aéreo.
            - Operadores abortam a missão (caso ainda não tenha iniciado o voo), ou retornam à base (caso já tenha iniciado o voo).
            - Liberar espaço utilizado para próxima utilização.
- Cenário 3.0: 
    - Objetivo: ensaio igual ao cenário 1.0, mas com 2 USS diferentes solicitando voos (VLOS e BVLOS).
    - 2 USS
    - Com conflito de rota
    - Sem restrições
    - VLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 3.0.0: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), um para voo VLOS e outro para voo BVLOS, para diferentes provedores de serviços (um operador para cada provedor de serviços). Depois invertem a ordem da solicitação.
            - Provedores de serviço verificam restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
- Cenário 3.1: 
    - Objetivo: ensaio igual ao cenário 3.0, incluindo restrições de voo.
    - 2 USS
    - Com conflito de rota
    - Com restrições
    - VLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 3.1.0: Solicitação de voo com restrição pré-existente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), um para voo VLOS e outro para voo BVLOS, para diferentes provedores de serviços (um operador para cada provedor de serviços). Depois invertem a ordem da solicitação.
            - Provedores de serviço verificam restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
        - Ensaio 3.1.1: Solicitação de voo com restrição imposta posteriormente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), um para voo VLOS e outro para voo BVLOS, para diferentes provedores de serviços (um operador para cada provedor de serviços). Depois invertem a ordem da solicitação.
            - Provedores de serviço verificam restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Provedores de serviços recebem restrição no espaço aéreo UTM, em conflito com o espaço aéreo previamente autorizado.
            - Provedores de serviços informam aos operadores referente à restrição no espaço aéreo.
            - Operadores abortam a missão (caso ainda não tenha iniciado o voo), ou retornam à base (caso já tenha iniciado o voo).
            - Liberar espaço utilizado para próxima utilização.
- Cenário 4.0: 
    - Objetivo: ensaio igual ao cenário 2.0, mas com 2 USS diferentes solicitando voos (BVLOS e BVLOS).
    - 2 USS
    - Com conflito de rota
    - Sem restrições
    - BVLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 4.0.0: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), ambos para voos BVLOS, para diferentes provedores de serviços (um operador para cada provedor de serviços).
            - Provedores de serviço verificam restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
- Cenário 4.1: 
    - Objetivo: ensaio igual ao cenário 4.0, incluindo restrições de voo.
    - 2 USS
    - Com conflito de rota
    - Com restrições
    - BVLOS e BVLOS
    - Detalhamento do cenário: 
        - Ensaio 4.1.0: Solicitação de voo com restrição pré-existente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), ambos para voos BVLOS, para diferentes provedores de serviços (um operador para cada provedor de serviços).
            - Provedores de serviço verificam restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Realização dos voos.
            - Liberar espaço utilizado para próxima utilização.
        - Ensaio 4.1.1: Solicitação de voo com restrição imposta posteriormente: 
            - Testar acesso dos operadores ao ECO-UTM através da interface dos provedores de serviço.
            - Dois operadores solicitam acesso ao espaço aéreo UTM (4D), ambos para voos BVLOS, para diferentes provedores de serviços (um operador para cada provedor de serviços).
            - Provedores de serviço verificam restrições presentes no espaço aéreo solicitado.
            - Desconflitar espaço solicitado das restrições presentes (caso existam).
            - Desconflitar espaço solicitado por cada operador (ordem cronológica de solicitação).
            - Operadores recebem autorização para uso do espaço aéreo (4D).
            - Provedores de serviços recebem restrição no espaço aéreo UTM, em conflito com o espaço aéreo previamente autorizado.
            - Provedores de serviços informam aos operadores referente à restrição no espaço aéreo.
            - Operadores abortam a missão (caso ainda não tenha iniciado o voo), ou retornam à base (caso já tenha iniciado o voo).
            - Liberar espaço utilizado para próxima utilização.

# Ensaio 2



# Escopo

Escopo do Segundo Ensaio Técnico do BR-UTM, ainda sem data definida. A previsão é executar o ensaio em ambiente de produção, na SBR-497.

#### Responsabilidades Provedores

- <span style="text-decoration: underline;">Utilizar todos os estados das OIRs</span>
    - Ao criar uma OIR, ela está no estado "Accepted". Quando a operação iniciar, o provedor deve mudar o status para "Activated". Ao fim da operação, o provedor deve encerrar a OIR, deletando ela do DSS.
    - Em casos de Não conformidade e contingência, o provedor deve mudar o status da OIR. Os outros provedores subscritos na área devem agir de acordo com a nova situação.
    - [![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/qRoimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/qRoimage.png)
- <span style="text-decoration: underline;">Utilizar NTP do ICEA</span>
    - O ICEA disponibilizará um servidor NTP para sincronizar os horários entre todos os provedores.
    - [![image.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/dqbimage.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/dqbimage.png)
- <span style="text-decoration: underline;">Utilizar altitude WSG84</span>
    - Padronizar o uso de altitude utilizando o padrão WSG84.
- <span style="text-decoration: underline;">Utilizar autenticação</span>
    - Para comunicação com o DSS e entre provedores, toda requisição deve possuir um token emitido pelo servidor de autenticação do ICEA
- <span style="text-decoration: underline;">Utilizar campo de prioridade na OIR</span>
    - Os provedores devem considerar o campo "priority" na criação de OIR.
    - Uma OIR com prioridade maior pode "sobrescrever" uma com prioridade menor. Ou seja, as OIRs com maior prioridade podem ser criadas onde já existia uma outra OIR com prioridade menor.
    - A tabela descrevendo qual a prioridade de cada tipo de operação ainda será definida.
- <span style="text-decoration: underline;">Permitir conflito entre voos VLOS/EVLOS</span>
    - OIRs para voos visuais podem ter conflito com outras OIRs de voos visuais.
    - OIRs para voos não visuais não podem ter conflito com nenhuma outra OIR, de nenhum tipo.

#### Responsabilidades ICEA/DECEA

- Adapter do Sarpas para DSS
- Adapter do DASA para DSS
- Criar servidor NTP
- Centralizador de logs
- Servidor auth
- Ferramenta de onboarding provedores
- Cadastro de provedores

# Modelagem de Processos - Autorização de Voo por Provedores

O processo habitual de autorização de voo por provedores deve seguir o seguinte fluxo:

[![0 - Fluxo.png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/0-fluxo-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/0-fluxo-1.png "Teste")

Fluxo de Autorização e Ativação de Voo

---

#### Autorização de Voo

O processo de Autorização de Voo (P1) é a primeira etapa do desconflito estratégico de uma operação com drone. O processo começa com um pedido do operador. Esse pedido deve seguir um padrão (ainda não definido), e esse padrão deve ser validado pelo provedor USS. Após, o provedor deve realizar a checagem de desconflito estratégico, e por fim cadastrar o novo voo no ECO-UTM. Caso alguma checagem falhe, o provedor deve notificar o operador dessa falha. É permitido, porém não obrigatório, que o USS sugira alternativas para o operador em casos de rejeição.

[![1 - Autorização de Voo (1).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/1-autorizacao-de-voo-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/1-autorizacao-de-voo-1.png)

P1 - Autorização de Voo

[![1.1 - Desconflito Estratégico (1).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/1-1-desconflito-estrategico-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/1-1-desconflito-estrategico-1.png)

P1.1 - Desconflito Estratégico

---

#### Ativação de Voo

Após ter seu voo aprovado, o operador deve solicitar a ativação do voo instantes antes de sua execução. Nessa etapa, o provedor deve garantir que a autorização de voo continua válida, e que as condições de voo (condições ainda não definidas) permitem a realização segura do voo. Após a checagem, o USS notifica o operador que ele pode inicar a operação.

Então, o provedor aguarda notificação do operador sobre o encerramento da operação. Recebendo a notificação, o operador deve encerrar o plano de voo no ECO-UTM.

[![2 - Ativação de voo (3).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/2-ativacao-de-voo-3.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/2-ativacao-de-voo-3.png)

P2 - Ativação de Voo

---

#### Mudanças Dinâmicas

No período entre a autorização e a ativação, pode ocorrer mudanças nas condições do espaço aéreo, como uma nova restrição ou um novo voo com maior prioridade. Nesses casos, é de suma importância que o USS notifique o operador dessa atualização, para evitar frustrações do operador na hora da ativação do voo.

[![3 - Mudanças Dinâmicas (1).png](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/scaled-1680-/3-mudancas-dinamicas-1.png)](https://servicos2.decea.mil.br/br-utm/wiki/uploads/images/gallery/2024-05/3-mudancas-dinamicas-1.png)

P3 - Mudanças Dinâmicas

---

#### Emergência

WIP

# Briefing: BR-UTM Field Test 2

**<span class="selected">Document Version:</span>**<span class="selected"> 1.2 </span>**<span class="selected">Date:</span>**<span class="selected"> June 16, 2025</span>

## <span class="selected">1. Introduction &amp; Vision</span>

<span class="selected">The BR-UTM Field Test 1 successfully validated the foundational capabilities of our Discovery and Synchronization Service (DSS), based on the InterUSS platform. Participants demonstrated the ability to perform basic strategic deconfliction of Operational Intent References (OIRs) and deconfliction from static Constraints.</span>

<span class="selected">This Second Field Test will expand upon that foundation, introducing critical new capabilities to validate the complete, end-to-end operational lifecycle. The vision is to simulate a real-world operational environment where multiple UAS Service Suppliers (USS) coordinate flights, and operators conduct live drone operations based on these coordinated intents.</span>

### <span class="selected">1.1. New Features for Validation</span>

<span class="selected">This test will validate all previously tested features, plus the following crucial additions:</span>

- **<span class="selected">USS-to-USS Authentication:</span>**<span class="selected"> Secure, token-based authentication for all inter-USS communication.</span>
- **<span class="selected">OIR Activation &amp; State Management:</span>**<span class="selected"> The full lifecycle of an OIR, including the transition to an "activated" state just before flight.</span>
- **<span class="selected">Priority Operations:</span>**<span class="selected"> Handling of high-priority flights that may require other operations to adjust.</span>
- **<span class="selected">Remote Identification (Remote ID):</span>**<span class="selected"> Integration of Remote ID information services into the USS workflow.</span>
- **<span class="selected">In-Flight Contingency Management:</span>**<span class="selected"> Real-time response to dynamic, high-priority airspace constraints that appear during an active flight.</span>

## <span class="selected">2. Core Objectives</span>

<span class="selected">The primary goals of this field test are to:</span>

1. **<span class="selected">Validate End-to-End OIR Lifecycle:</span>**<span class="selected"> Demonstrate the complete process of creating, strategically deconflicting, activating, and closing out OIRs in a multi-USS environment.</span>
2. **<span class="selected">Verify Secure Inter-USS Coordination:</span>**<span class="selected"> Ensure all participants can successfully implement and use the specified authentication protocols for all DSS and peer-to-peer USS interactions.</span>
3. **<span class="selected">Test Advanced Strategic Deconfliction:</span>**<span class="selected"> Validate the system's ability to manage and resolve conflicts between multiple OIRs, including those with different priorities.</span>
4. **<span class="selected">Demonstrate OIR Activation:</span>**<span class="selected"> Ensure that the transition of an OIR to its "activated" state is correctly propagated and managed by all relevant USSs.</span>
5. **<span class="selected">Validate Priority Handling:</span>**<span class="selected"> Successfully manage the introduction of a high-priority OIR, requiring other active or planned operations to be modified or cleared.</span>
6. **<span class="selected">Integrate Remote ID Services:</span>**<span class="selected"> Demonstrate that USSs can support the provision of Remote ID data for active flights to authorized entities.</span>
7. **<span class="selected">Conduct Live Flight Operations:</span>**<span class="selected"> Have operators fly drones based on successfully coordinated and activated OIRs, proving the link between the digital UTM system and real-world flight.</span>

## <span class="selected">3. Technical Architecture &amp; Protocols</span>

<span class="selected">The core of the technical architecture remains the DECEA-provided </span>**<span class="selected">Discovery and Synchronization Service (DSS)</span>**<span class="selected">, which is an implementation of the InterUSS Platform.</span>

- **<span class="selected">API Contracts:</span>**<span class="selected"> All participants must implement the server-side and client-side portions of the API contracts defined in the </span>[**<span class="selected">dp-icea/Protocols GitHub repository</span>**](https://github.com/dp-icea/Protocols "null")<span class="selected">. This is the single source of truth for all required interfaces.</span>
- **<span class="selected">DSS Implementation:</span>**<span class="selected"> For context and documentation on the underlying technology, refer to the </span>[**<span class="selected">interuss/dss GitHub repository</span>**](https://github.com/interuss/dss "null")<span class="selected">.</span>

### <span class="selected">3.1. Authentication</span>

<span class="selected">Authentication is </span>**<span class="selected">mandatory</span>**<span class="selected"> for all inter-USS and DSS API calls. The process is detailed in the workshop documentation [\[Desconflito\]\[Autenticação\] Roteiro Etapa 1](https://servicos2.decea.mil.br/br-utm/wiki/books/documentacao-tecnica/page/desconflitoautenticacao-roteiro-etapa-1 "[Desconflito][Autenticação] Roteiro Etapa 1")</span><span class="selected">.</span>

- **<span class="selected">Token Generation:</span>**<span class="selected"> Before making a request to another USS, you must first request a JSON Web Token (JWT) from the DECEA authentication service. The </span>`<span class="selected">intended_audience</span>`<span class="selected"> and </span>`<span class="selected">scope</span>`<span class="selected"> parameters are critical.</span>
- **<span class="selected">Token Validation:</span>**<span class="selected"> When your USS receives a request, you must validate the incoming JWT. This involves:</span>
    
    
    1. <span class="selected">Verifying the token's signature using the Eco-UTM public key.</span>
    2. <span class="selected">Checking the token's expiration time (</span>`<span class="selected">exp</span>`<span class="selected">).</span>
    3. <span class="selected">Confirming the audience (</span>`<span class="selected">aud</span>`<span class="selected">) matches your USS identifier.</span>
    4. <span class="selected">Ensuring the token contains the required </span>`<span class="selected">scope</span>`<span class="selected"> for the requested endpoint.</span>

### <span class="selected">3.2. Governing Standards</span>

<span class="selected">This field test will adhere to the following international standards, which form the basis of the technical and operational protocols:</span>

- **<span class="selected">UTM Interoperability:</span>**<span class="selected"> All strategic coordination and information exchange between USSs shall be conducted in accordance with </span>**<span class="selected">ASTM F3548-21</span>**<span class="selected">, "Standard Specification for UAS Traffic Management (UTM) UAS Service Supplier (USS) Interoperability."</span>
- **<span class="selected">Remote ID:</span>**<span class="selected"> The implementation and data formats for Network Remote ID services shall follow </span>**<span class="selected">ASTM F3411-22a</span>**<span class="selected">, "Standard Specification For Remote ID And Tracking."</span>

## <span class="selected">4. Participant Roles &amp; Responsibilities</span>

<span class="selected">Participants can choose to act in one or both of the following roles:</span>

- **<span class="selected">USS Provider:</span>**<span class="selected"> An entity running a software implementation that provides UAS services.</span>
    
    
    - **<span class="selected">Responsibilities:</span>**
        
        
        - <span class="selected">Implement the full API contract.</span>
        - <span class="selected">Integrate with the authentication service.</span>
        - <span class="selected">Connect to the central DSS to discover other operations and publish their own.</span>
        - <span class="selected">Manage the full lifecycle of OIRs on behalf of their operator clients.</span>
        - <span class="selected">Coordinate directly with other USSs for strategic deconfliction.</span>
        - <span class="selected">Provide an endpoint for other USSs to subscribe to updates for OIRs they manage.</span>
- **<span class="selected">Drone Operator:</span>**<span class="selected"> An entity that plans and executes drone flights.</span>
    
    
    - **<span class="selected">Responsibilities:</span>**
        
        
        - <span class="selected">Partner with a registered USS Provider for flight planning.</span>
        - <span class="selected">Conduct pre-flight checks.</span>
        - <span class="selected">Execute the flight mission precisely according to the activated OIR (trajectory, altitude, and time).</span>
        - <span class="selected">Equip the drone with the necessary hardware for Remote ID broadcast.</span>
        - <span class="selected">Maintain communication with the USS during flight and be prepared to act on in-flight instructions, including immediate termination of the operation.</span>

## <span class="selected">5. Test Scenarios</span>

<span class="selected">The field test will be structured around a series of progressively complex scenarios.</span>

### <span class="selected">Scenario 1: Nominal Coordination and Flight Activation</span>

- **<span class="selected">Objective:</span>**<span class="selected"> Validate the basic workflow, authentication, and OIR activation.</span>
- **<span class="selected">Execution:</span>**
    
    
    1. <span class="selected">Two or more USS providers will each create a distinct, non-conflicting OIR in the DSS.</span>
    2. <span class="selected">Just prior to the scheduled flight time, each USS will update their OIR state to </span>**`<span class="selected">Accepted</span>`**<span class="selected"> and then </span>**`<span class="selected">Activated</span>`**<span class="selected">. They must notify any subscribers of this change.</span>
    3. <span class="selected">The corresponding Drone Operator will execute the flight.</span>
    4. <span class="selected">During the flight, the drone will broadcast Remote ID data.</span>
    5. <span class="selected">Upon completion, the USS will update the OIR state to </span>**`<span class="selected">Ended</span>`**<span class="selected">.</span>

### <span class="selected">Scenario 2: Strategic Deconfliction with a Constraint</span>

- **<span class="selected">Objective:</span>**<span class="selected"> Validate conflict detection and resolution against a static geographical constraint.</span>
- **<span class="selected">Execution:</span>**
    
    
    1. <span class="selected">The DSS will be pre-populated with a </span>`<span class="selected">Constraint</span>`<span class="selected"> (e.g., a no-fly zone).</span>
    2. <span class="selected">A USS will attempt to create an OIR that partially overlaps with the constraint.</span>
    3. <span class="selected">The USS must identify the conflict by querying the DSS.</span>
    4. <span class="selected">The USS must then modify the OIR's geometry to remove the conflict before it can be successfully created and activated.</span>
    5. <span class="selected">The Operator will fly the deconflicted mission.</span>

### <span class="selected">Scenario 3: Inter-USS Deconfliction &amp; Negotiation</span>

- **<span class="selected">Objective:</span>**<span class="selected"> Validate peer-to-peer coordination to resolve a conflict between two OIRs.</span>
- **<span class="selected">Execution:</span>**
    
    
    1. <span class="selected">USS-A creates and submits a valid OIR to the DSS.</span>
    2. <span class="selected">USS-B attempts to create an OIR whose 4D volume overlaps with USS-A's OIR.</span>
    3. <span class="selected">USS-B's initial attempt to create the OIR in the DSS should fail due to the conflict.</span>
    4. <span class="selected">USS-B must query the DSS, identify the conflicting OIR from USS-A, and initiate a strategic negotiation (as defined by the ASTM standard, though this may be a manual coordination step for the test).</span>
    5. <span class="selected">One or both USSs will adjust their OIRs to resolve the conflict.</span>
    6. <span class="selected">Once resolved, both OIRs can be created and subsequently activated for flight.</span>

### <span class="selected">Scenario 4: Priority Operation (Pre-Flight)</span>

- **<span class="selected">Objective:</span>**<span class="selected"> Validate the system's response to a high-priority flight identified during the planning phase.</span>
- **<span class="selected">Execution:</span>**
    
    
    1. <span class="selected">Multiple "standard" priority OIRs are planned or active in the DSS.</span>
    2. <span class="selected">A designated USS (the "Emergency Services USS") will introduce a new OIR with </span>**`<span class="selected">priority</span>`**<span class="selected"> set higher than the others (e.g., for a simulated medical delivery or security overwatch). This OIR will overlap with existing standard operations.</span>
    3. <span class="selected">Other USSs must detect this high-priority OIR and are required to modify or cancel their own conflicting operations to clear the area.</span>
    4. <span class="selected">The high-priority flight is then activated and flown.</span>

### <span class="selected">Scenario 5: In-Flight Contingency - Dynamic Constraint</span>

- **<span class="selected">Objective:</span>**<span class="selected"> Validate a USS's ability to monitor for new conflicts during an active flight and instruct the operator to take immediate, appropriate action.</span>
- **<span class="selected">Execution:</span>**
    
    
    1. <span class="selected">USS-A has an OIR in the </span>`<span class="selected">Activated</span>`<span class="selected"> state, and its Operator is conducting the flight.</span>
    2. <span class="selected">An "Emergency Services USS" creates a new, high-priority </span>`<span class="selected">Constraint</span>`<span class="selected"> or </span>`<span class="selected">OIR</span>`<span class="selected"> that dynamically appears and conflicts with USS-A's active flight volume.</span>
    3. <span class="selected">USS-A must detect this new, superseding conflict in near real-time by monitoring the DSS or receiving a notification from a subscription.</span>
    4. <span class="selected">Upon detecting the unmitigable conflict, USS-A must immediately relay a command to its Drone Operator to cease the operation.</span>
    5. <span class="selected">The Operator must comply with the instruction and safely terminate the flight (e.g., land immediately or execute a pre-planned return-to-launch maneuver).</span>
    6. <span class="selected">USS-A updates its OIR state to </span>`<span class="selected">Ended</span>`<span class="selected"> to reflect the early termination of the flight.</span>

## <span class="selected">6. Operational Safety Considerations</span>

<span class="selected">To ensure the safety of all participants and the public, the following operational rules are mandatory for all live flights during the test.</span>

- **<span class="selected">Flight Rules:</span>**<span class="selected"> All live flights will be conducted under Visual Line of Sight (VLOS) conditions, in strict accordance with </span>**<span class="selected">ICA 100-40</span>**<span class="selected">. While the technical scenarios will simulate Beyond Visual Line of Sight (BVLOS) coordination, the actual flight must remain within the pilot's line of sight at all times.</span>
- **<span class="selected">Immediate Operation Termination:</span>**<span class="selected"> All operators must be able to cease operations immediately upon command from their managing USS. This capability is critical for scenarios involving in-flight contingencies.</span>
- **<span class="selected">Loss of C2 Link Procedure:</span>**<span class="selected"> All UAS must be configured to execute a "Return to Home" (RTH) procedure automatically upon loss of the command and control (C2) link. The RTH altitude must be set to the operation's maximum authorized ceiling to ensure predictable behavior and vertical deconfliction.</span>
- **<span class="selected">Fly-Away Emergency Declaration:</span>**<span class="selected"> In the event of a fly-away or any situation where the operator loses control of the aircraft, the operator must immediately declare an emergency to DECEA’s personnel, as well as the USS. The USS will then be responsible for propagating this information as required.</span>

## <span class="selected">7. Getting Started &amp; Prerequisites</span>

<span class="selected">All participants must complete the following steps to be ready for the field test:</span>

1. **<span class="selected">Register Participation:</span>**<span class="selected"> Formally register your organization and declare your intended role(s).</span>
2. **<span class="selected">Review Documentation:</span>**<span class="selected"> Thoroughly read the API documentation at </span>`<span class="selected">https://github.com/dp-icea/Protocols</span>`<span class="selected">.</span>
3. **<span class="selected">Implement Authentication:</span>**<span class="selected"> Implement the JWT-based authentication client and server logic. You will be provided with API keys and the public key.</span>
4. **<span class="selected">Implement OIR Activation:</span>**<span class="selected"> Ensure your system correctly handles the </span>`<span class="selected">Accepted</span>`<span class="selected">, </span>`<span class="selected">Activated</span>`<span class="selected">, and </span>`<span class="selected">Ended</span>`<span class="selected"> states of an OIR.</span>
5. **<span class="selected">Provide Endpoints:</span>**<span class="selected"> USS Providers must supply the base URL for their publicly accessible API so it can be registered in the DSS for peer-to-peer communication.</span>
6. **<span class="selected">Prepare for Flight:</span>**<span class="selected"> Operators must have their drones, ground control stations, and Remote ID broadcast modules ready for operation.</span>
7. <span class="selected">**Synchronize Time Servers:** All USS and operator systems must synchronize their clocks with DECEA’s official NTP (Network Time Protocol) server, to be provided. Accurate, synchronized time is critical for the correct sequencing of operations, conflict detection, and logging.</span>

<span class="selected">We look forward to your participation in this critical test to advance the future of aviation in Brazil.</span>

# Checklist Provedores

Um provedor que deseja se integrar tecnicamente ao ecossistema do BR-UTM pode utilizar os checklists abaixo como balizadores para o desenvolvimento das suas soluções.

Os checklists estão dividos em três. O primeiro, de autenticação, é obrigatório para todos o provedores e deve ser completado por primeiro, visto que todos os outros checklists dependem da autenticação. O checklist de desconflito visa guiar o desenvolvimento para provedores que desejam criar liberações de espaço aéreo para seus operadores, em alternativa à liberação obtida através do SARPAS. Já o checklist de identificação guia o desenvolvimento de aplicações que provêm em tempo real a posição dos drones via internet. A obrigatoriedade da identificação durante a operação ainda está em debate pelo grupo. Orienta-se que provedores tenham essa capacidade para todos os voos.

<details id="bkmrk-autentica%C3%A7%C3%A3o-ao-rece"><summary>Autenticação</summary>

O protocolo de autenticação utilizada no ecossistema no BR-UTM segue a arquitetura definida em ASTM F3548-21 Anexo X1.1 "*<span class="fontstyle0">Base Deployment: Access Tokens with Audience </span><span class="fontstyle0">Claims</span>*", baseado no padrão de tokens JWT: I<span class="fontstyle0">ETC RFC 7519</span>.

Checklist:

- [ ] Obter apikey
- [ ] Realizar autenticação
- [ ] Validar autenticação de outro USS

Os detalhes técnicos podem ser obtidos abaixo. A referência técnica da etapa de autenticação pode ser encontrada em [Autenticação Service Provider](https://servicos2.decea.mil.br/br-utm/wiki/books/documentacao-tecnica/page/autenticacao-service-provider "Autenticação Service Provider")

</details><details id="bkmrk-desconflito-%C2%A0"><summary>Desconflito</summary>

Para ser um provedor de desconflito, o provedor deve seguir a especificação ASTM F3548-21. Os detalhes técnicos estão em: [\[Desconflito\]\[Autenticação\] Roteiro Etapa 1](https://servicos2.decea.mil.br/br-utm/wiki/books/documentacao-tecnica/page/desconflitoautenticacao-roteiro-etapa-1 "[Desconflito][Autenticação] Roteiro Etapa 1")

Checklist

- [ ] OIR Isolada
- [ ] OIR próxima a constraint
- [ ] OIR com conflito
- [ ] Endpoints de coordenação
- [ ] Ativação de OIR
- [ ] Exibição da OIR no viewer do ICEA (Entrar em contato com a equipe técnica)

</details><details id="bkmrk-identifica%C3%A7%C3%A3o-%C2%A0"><summary>Identificação</summary>

Para ser um provedor de identificação, o provedor deve seguir a especificaçao ASTM F3411-22a. Os detalhes técnicos estão em: [\[Remote ID\] Onboarding Service Provider.](https://servicos2.decea.mil.br/br-utm/wiki/books/documentacao-tecnica/page/remote-id-onboarding-service-provider "[Remote ID] Onboarding Service Provider")

O protocolo de comunicação entre DRONE &lt;-&gt; USS não é escopo do BR-UTM, ficando cada USS livre para implementar da melhor maneira possível. É esperado que o provedor atualize a posição de seus drones no mínimo a cada 4 segundos

Checklist

- [ ] Criação ISA sem subscription
- [ ] Criação ISA com subcription
- [ ] Exibição da posição do drone no viewer do ICEA (Entrar em contato com a equipe técnica)

</details>---

## Autenticação

<details id="bkmrk-autenticar-se-%C2%A0"><summary>Autenticar-se</summary>

A URL base é GET [`http://montreal.icea.decea.mil.br:64235/token`](http://montreal.icea.decea.mil.br:64235/token)

A requisição deve conter as seguintes *query\_strings*

<table border="1" style="border-collapse: collapse; width: 99.9786%; height: 106.033px;"><colgroup><col style="width: 50.0471%;"></col><col style="width: 50.0471%;"></col></colgroup><tbody><tr style="height: 46.5167px;"><td style="height: 46.5167px;">intended\_audience</td><td style="height: 46.5167px;"><span style="color: rgb(0, 0, 0);">USS de destino da mensagem (Vem na OIR ou Constraint no campo *manager*)</span>  
</td></tr><tr style="height: 29.8px;"><td style="height: 29.8px;">scope</td><td style="height: 29.8px;"><span style="color: rgb(0, 0, 0);">escopo da requisição. Ex.: utm.strategic\_coordination.</span>

<span style="color: rgb(0, 0, 0);">O scope esperado de cada endpoint está definido no OpenAPI  
</span>

</td></tr><tr style="height: 29.7167px;"><td style="height: 29.7167px;">apikey</td><td style="height: 29.7167px;"><span style="color: rgb(0, 0, 0);">chave recebida do ICEA. Pode-se optar em enviar esse campo no Header da requisição  
</span></td></tr></tbody></table>

</details><details id="bkmrk-validar-autentica%C3%A7%C3%A3o"><summary>Validar autenticação de outro USS</summary>

Ao receber uma requisição de outro USS em seu servidor, é necessário validar o token de autenticação fornecido pelo outro USS. O payload do token contém as seguintes informações:

<table border="1" style="border-collapse: collapse; width: 99.9786%; height: 249.384px;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 46.5167px;"><td style="height: 46.5167px;">aud  
</td><td style="height: 46.5167px;">Nome do provedor destino da requisição  
</td><td style="height: 46.5167px;">"core-service"  
</td></tr><tr style="height: 63.3167px;"><td style="height: 63.3167px;">exp  
</td><td style="height: 63.3167px;">Timestamp epoch do horário de expiração do token. O token não deve ser aceito a partir desse horário  
</td><td style="height: 63.3167px;">1719777868</td></tr><tr style="height: 29.7167px;"><td style="height: 29.7167px;">iss  
</td><td style="height: 29.7167px;">Nome do provedor emissor do token  
</td><td style="height: 29.7167px;">ICEA  
</td></tr><tr style="height: 80.1167px;"><td style="height: 80.1167px;">scope  
</td><td style="height: 80.1167px;">Scope autorizado pelo token. Cada endpoint deve aceitar apenas determinados scopes, conforme definido no OpenAPI  
</td><td style="height: 80.1167px;">utm.strategic\_coordination  
</td></tr><tr style="height: 29.7167px;"><td style="height: 29.7167px;">sub  
</td><td style="height: 29.7167px;">Nome do provedor origem da requisição  
</td><td style="height: 29.7167px;">"USS1"</td></tr></tbody></table>

Os passos para verificação são

1. Verificar assinatura do token 
    1. Deve-se validar a assinatura do token utilizando a chave pública do ICEA
2. Verificar a validade do token 
    1. Deve-se validar que o campo "exp" não seja menor do que o horário atual
3. Verficiar audiência do token 
    1. Deve-se validar que o campo "aud" seja o seu nome, ou seja, o nome do provedor que está recebendo a requisição
4. Verificar o scope 
    1. Deve-se validar que o campo "scope" contenha o scope necessário para requisitar o endpoint. Um token pode possuir mais de um scope separados por espaço em branco.

</details><details id="bkmrk-eco-utm-autenticator"><summary>Eco-UTM Autenticator Public Key</summary>

```
-----BEGIN PUBLIC KEY-----
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHkNtpy3GB0YTCl2VCCd22i0rJwI
GBSazD4QRKvH6rch0IP4igb+02r7t0X//tuj0VbwtJz3cEICP8OGSqrdTSCGj5Y0
3Oa2gPkx/0c0V8D0eSXS/CUC0qrYHnAGLqko7eW87HW0rh7nnl2bB4Lu+R8fOmQt
5frCJ5eTkzwK5YczAgMBAAE=
-----END PUBLIC KEY-----
```

</details>

# V Reunião: Processo de Certificação

[https://docs.google.com/presentation/d/15G8D6HWj6SSnDoK1B89x93YhNRMfoCzC/edit?usp=drivesdk&amp;ouid=115891639852919271691&amp;rtpof=true&amp;sd=true](https://docs.google.com/presentation/d/15G8D6HWj6SSnDoK1B89x93YhNRMfoCzC/edit?usp=drivesdk&ouid=115891639852919271691&rtpof=true&sd=true)

  
  
Cenários de testes sugeridos e discutidos:

\- Interoperabilidade:

- Garantir interoperabildiade entre sistemas 
    - Teste: DSS ao USS, USS ao USS, USS ao DSS
- Testar Funcionalidade de acesso remoto via API 
    - Teste: Provedor - Usuario
    - Declaratorio
- Ciber: Certificados HTTPS, bloqueando http
- Incident Report 
    - Armazenamento de Logs 
        - Tipo de log e tempo pra cada tipo 
            - Provedor dá o OK que está ciente do que é necessário
        - Como será verificado?
        - Inspeções
        - Definir quais são as informações críticas que necessitam teste
- Categorizar os provedores A, B, C, D 
    - De acordo com as capacidades comprovadas por teste e declaratórios
- Disponibilizar EndPoint para consulta de Logs (inspeção)
- Testar Formato da comunicação (padrão ASTM)
- Atentar aos casos criminais que possam vir a ocorrer, em questão de responsabilização 
    - Matriz de responsabilidade clara
- Definir quais os requisitos são necessaários 
    - Definir quais devem ser testados
    - Definir quais são declaratórios
- Planejamento de risco e plano de contingencia
- Requisitos para áreas diferentes (remota) 
    - Haverão requisitos diferentes para diferentes categorias
    - Fase 1: Categoria A
- Testes em tempo Real: Capacidade do provedor de comunicar informações de espaço aéreo para o usuário e para o DSS
- Provedor deve fornecer acesso de "usuário de testes" para que o DECEA possa fazer testes
- Validar consistência de dados: 
    - Verificar formatação, casas decimais, formatos de polígonos
    - Determinar margem de erro aceitável
- Teste de carga requisição ao DSS e ao provedor 
    - Performance dos sistemas do Provedor sob alta carga de informação (Ex: Evento com muitos usuários próximos ao mesmo tempo)
    - Impacto na telemetria, requisições, comunicação
- Maneira de classificar provedor: Autonomia do provedor sem DSS
- Verificar clareza da visualização de dados, dashboard
- Verificar se a interface está amigável o suficiente para o usuário 
    - Exigir o "OK" do operador
- Resposta a alterações normativas: Garantir um tempo de atualização do sistema 
    - definir um tempo para os provedores implementarem as mudanças
    - definir um tempo para alterações críticas 
        - Caso a caso mediante análise do time técnico
        - Estabelecer limitantes condicionais até o provedor cumprir
    - Não há um tempo para correção&gt; Mas é exigido que o plano de ação seja imediato
- Provedor que passou por acidentes precisa sofre novo processo de certificação
- Garantir autenticidade e autenticação segura de usuários 
    - exigir autenticação em 3 fatores do usuário
- Armazenamento histórico: 
    - Em casos especiais, definir requisitos especiais de armazenameto: 
        - - Acidente: Guardar todos os logs existentes dentro do intervalo de 24h antes e após o evento.
- Disponibilidade de Documentação e Treinamento: 
    - Verificar existência de documentação disponível para o usuário
    - Verificar existência de treinamento do sistema para o usuário
- Mecanismo de comunicação de incidentes: 
    - Garantir que o provedor tenha o mecanismo de incident report
    - Obrigatoriedade de Reportar incidentes envolvendo pessoas
    - Qual a prerrogativa do provedor?
    - incidentes de sistema em termos de eficiência de prestação de serviços
- Hierarquia da solicitação: 
    - Testar interação com outras operações de prioridades diferentes

Lista sugerida pela SpeedBird:

1\. Interoperability with Other Systems: Assess the interoperability of the CIS platform with existing air traffic management systems and UAS platforms.  
2\. API Functionality for External Access: Test the availability and functionality of APIs for external access to CIS data.  
3\. Data Integration with Multiple Platforms: Verify that the CIS can successfully aggregate data from multiple sources involved in UAS operations.  
4\. Security Protocol Compliance: Ensure that the CIS adheres to cybersecurity protocols to protect sensitive information.  
5\. Data Format Compliance: Test the CIS’s ability to handle and transmit data in formats compliant with relevant industry standards (i.e ASTM’s and EAROCAE’s provision)  
6\. Real-Time Data Availability: Verify that users can access real-time data about UAS operations, including flight status and airspace restrictions.  
7\. Data Consistency and Accuracy: Validate that the information provided by the CIS is consistent and accurate across all integrated systems.  
8\. Scalability of the Platform: Assess the scalability of the CIS to handle increasing numbers of users and UTM airspaces.  
9\. System Performance under Load: Evaluate the performance of the CIS under high data load conditions to ensure stability and responsiveness.  
10\. Data Visualization Features: Test the effectiveness of data visualization tools within the platform to present complex operational data clearly.  
11\. User-Friendly Interface: Evaluate the user interface of the CIS for intuitiveness and ease of navigation for different user roles.  
12\. Response to Regulatory Changes: Ensure that the CIS can adapt its information services quickly in response to changes in UAS regulations.  
13\. User Access Management: Ensure robust user authentication and authorization mechanisms are in place to manage user access levels.  
14\. Historical Data Management: Assess the platform’s ability to archive and retrieve historical data.  
15\. Training and Documentation Availability: Ensure that comprehensive training and user documentation are available for users to understand CIS functionalities.  
16\. Incident Reporting Mechanism: Ensure there is a mechanism for logging and reporting incidents of UTM’s.

  
  
Sugestões extras:

- Agendar FRZ: Próximo fórum

GOVERNANÇA/OPERACIONAL

- Qual a diretriz para o provedor em caso de queda de sistema BR-UTM 
    - Operações em curso podem finalizar
    - Novas operações não podem iniciar

# Ensaio Operacional 3 - Dezembro 2025

Documentos relacionados ao ensaio operacional que será realizado em Dezembro de 2025 com testes focados no operacional, fora os requisitos tecnicos ja testados

# Escopo

## Objetivo

Executar ensaio operacional no IEAv (15 a 17 de dezembro de 2025), com foco em validação de procedimentos de contingência, integração de restrições dinâmicas e avaliação da reação dos provedores diante de eventos simulados.

## Tópicos Principais

### Testes Operacionais

- **Check-in / Check-out**
    
    
    - Não permitido por telefone ou comunicação informal.
    - Definir processo padronizado.
- **Alertas e Geografia de Voo**
    
    
    - Notificação automática ao sair da área de voo (avaliar uso de Remote ID).
    - Identificação de drones com Remote ID que entram na área.
    - Resposta operacional do provedor diante dessas situações.
- **Restrições Dinâmicas**
    
    
    - Criação de restrição parcial com OIR ativa → ações possíveis:
        
        
        - Sair da área, cancelar voo ou reagir em tempo adequado.
    - Simulação de pouso de helicóptero → restrição automática temporária.
    - Avaliar tempo de reação dos provedores (cronometração) para agir após emergencia.
- **Condições de Operação**
    
    
    - Proibir pouso no mesmo ponto de decolagem em caso de restrição.
    - Testar Geo Fence → verificar se provedores cumprem restrições e se todas as OIRs estão dentro da Zona UTM.
    - Avaliar resposta a voos fora da Zona UTM.
    - Se drone sair da OIR → verificar se provedor cria nova OIR ou declara contingência.

### Features Extras a Testar

- Definir lista de **procedimentos padrão ao encerrar operação** para diferentes tipos de restrições (não assumir apenas “Return to Home”).
- Testar **volumes não nominais**:
    
    
    - Como provedores lidam com sua criação e gerenciamento.
- <span style="background-color: rgb(248, 202, 198);">\[NÃO PRIORIZADO\] </span>- *Inclusão de **detalhes nas restrições** (grau de severidade, ações obrigatórias, manobras seguras permitidas).*

### Requisitos BRAC

- Não é permitido ativar voo em volume não nominal.
- Caso o drone saia da OIR, deve-se calcular área possível e criar automaticamente volume não nominal.

### Observações Gerais

- Necessidade de ensaios mais orgânicos (“vai voando e eu vou avaliando os requisitos”).
- Foco na observação em tempo real da reação dos provedores.

# [WIP] Briefing: BR-UTM Field Test 3

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;"></div># Briefing: BR-UTM Field Test 3

**Document Version**: 1.0

**Date**: October 6, 2025

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk--1" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">---

</div>## 1. Introduction &amp; Vision

Following the successful validation of the end-to-end operational lifecycle in Field Test 2, this Third Field Test will shift focus to **real-time contingency management and provider responsiveness**. The vision is to move beyond pre-planned scenarios and evaluate how USS platforms and operators react to dynamic, unexpected events in a more organic operational environment.

This test, scheduled for **December 15-17, 2025, at IEAv**, will concentrate on the validation of advanced contingency procedures, the integration of dynamic constraints on active flights, and the automated handling of in-flight deviations.

### 1.1. New Features for Validation

This test will validate all previously tested features, with a specific focus on the following new capabilities:

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-dynamic-constraint-i" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">- **Dynamic Constraint Integration:** The ability for the system and participants to manage airspace restrictions that are created or modified *after* a flight has been activated.
- **Geo-Fencing and Automated Alerts:** Real-time detection and notification of deviations from the approved 4D operational volume (OIR).
- **Non-Nominal Volume Management:** The automated creation and management of non-nominal volumes in response to an in-flight deviation, as per BRAC requirements.
- **Provider Reaction Time:** Measurement and evaluation of the time taken for a USS to detect a conflict or deviation, process it, and deliver actionable instructions to the operator.

---

</div>## 2. Core Objectives

The primary goals of this field test are to:

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-validate-real-time-c" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">1. **Validate Real-Time Contingency Response:** Demonstrate that USSs can detect dynamic constraints affecting an active flight and guide the operator through appropriate, timely mitigation measures.
2. **Test Geo-Fence Compliance and Deviation Handling:** Verify that USSs can automatically detect when a drone exits its authorized OIR and trigger the appropriate operational response (e.g., alerts, a contingency declaration, or the creation of a non-nominal volume).
3. **Evaluate Non-Nominal Volume Procedures:** Ensure that in case of a deviation, USSs correctly calculate and create a non-nominal volume, and that flights cannot be activated within one.
4. **Measure USS Performance:** Quantitatively measure the reaction time of USS providers in responding to simulated emergencies and dynamic changes in the airspace.
5. **Standardize Contingency Maneuvers:** Test the implementation of specific, pre-defined contingency procedures beyond the default "Return to Home," based on information provided in dynamic constraints.

</div><div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk--2" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">---

</div>## 3. Technical Architecture &amp; Protocols

The core architecture remains the DECEA-provided **Discovery and Synchronization Service (DSS)**, based on the InterUSS Platform. All interactions will continue to adhere to the API contracts and authentication protocols established in Field Test 2.

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-governing-standards%3A" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">- **Governing Standards:** All operations will continue to be governed by **ASTM F3548-21** (UTM Interoperability) and **ASTM F3411-22a** (Remote ID).

</div><div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk--3" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important;">---

</div>## 4. Test Scenarios

The field test will focus on dynamic scenarios designed to assess real-time decision-making and system responsiveness.

### Scenario 1: Dynamic Constraint on an Active Flight

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-objective%3A-to-valida" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; text-align: justify;">- **Objective:** To validate the USS's ability to manage a new constraint that appears during flight and measure its reaction time.
- **Execution:**
    
    
    1. A USS activates an OIR, and the corresponding drone begins its mission.
    2. A test coordinator creates a new, high-priority `Constraint` that partially overlaps the active OIR (e.g., simulating a helicopter landing zone). The constraint will contain detailed instructions.
    3. The USS must detect the conflict in near real-time. The time from constraint publication to USS action will be measured.
    4. The USS must instruct its operator to take appropriate action based on its safety procedures (e.g., immediately exit the restricted area, hold position, or land at an alternate location).

</div>### Scenario 2: OIR Deviation and Non-Nominal Volume Creation

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-objective%3A-to-valida-1" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; text-align: justify;">- **Objective:** To validate the automated response to a drone breaching its approved flight geometry (Geo-Fence).
- **Execution:**
    
    
    1. A drone is operating under a valid, `Activated` OIR.
    2. The operator intentionally flies the drone outside the lateral and/or vertical boundaries of the OIR.
    3. The managing USS must automatically detect the deviation via Remote ID data or other tracking means.
    4. The USS must issue an immediate alert to the operator.
    5. Per BRAC requirements, the USS must then calculate the potential flight area and automatically create a `non-nominal volume` in the DSS to represent the contingency.

</div>### Scenario 3: Response to Flight Outside UTM Zone

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-objective%3A-to-evalua" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; text-align: justify;">- **Objective:** To evaluate the system's response to an operation that deviates outside the designated UTM test zone.
- **Execution:**
    
    
    1. An operator flies a drone near the boundary of the defined UTM Zone.
    2. The drone then proceeds to fly *outside* this zone.
    3. The managing USS and the overall system must detect this breach and initiate the appropriate alert and contingency procedures.

</div>### Scenario 4: Standardized Check-in / Check-out

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-objective%3A-to-valida-2" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; text-align: justify;">- **Objective:** To validate a formal, standardized electronic procedure for flight check-in and check-out.
- **Execution:**
    
    
    1. Before activating an OIR, a USS must perform a formal "check-in" using a defined digital process. Informal communications (phone, etc.) are not permitted.
    2. Upon normal completion or early termination of the flight, the USS must perform a formal "check-out" to close the operation.

---

</div>## 5. Operational Safety Considerations

All safety protocols from the previous test remain in effect.

<div _ngcontent-ng-c3766125863="" class="markdown markdown-main-panel enable-updated-hr-color" dir="ltr" id="bkmrk-flight-rules%3A-all-fl" style="--animation-duration: 400ms; --fade-animation-function: linear; font-family: Google Sans Text, sans-serif !important; line-height: 1.15 !important; margin-top: 0px !important; text-align: justify;">- **Flight Rules:** All flights will be conducted under **Visual Line of Sight (VLOS)** conditions, per **ICA 100-40**.
- **Immediate Termination:** Operators must be prepared to terminate flight operations immediately upon command from their USS.
- **Loss of C2 Link Procedure:** All UAS must be configured with a "Return to Home" (RTH) procedure upon loss of C2 link.
- **Emergency Declaration:** Operators must immediately declare any fly-away or loss-of-control event to DECEA personnel and their USS.

</div>

# Modelo de Procedimento Operacional Padrão (SOP)

### 1. Autoridade e Definições

Este SOP estabelece os procedimentos para todas as operações BVLOS conduzidas com integração a um Provedor de Serviços UTM (USS).

* **1.1. Operador (Piloto Remoto):** O operador é a autoridade final pela condução segura do voo. Esta autoridade é exercida em coordenação direta com os serviços e informações providos pelo USS.
* **1.2. Provedor de Serviços UTM (USS):** Entidade responsável pela prestação de serviços de gerenciamento de tráfego, incluindo planejamento, autorização, monitoramento de conformidade e fornecimento de dados do espaço aéreo.
* **1.3. GCS (Estação de Controle de Solo):** Interface primária do operador para o controle do Drone e para a comunicação de dados com o USS.

### 2. Operação e Automação

* **2.1. Nível de Automação:** A operação BVLOS será conduzida primariamente através de planos de voo automatizados (waypoints), com o operador monitorando a telemetria e o ambiente operacional.
* **2.2. Interface com USS:** A GCS deve manter comunicação constante com o USS para transmissão de telemetria (posição, altitude, status) e recebimento de informações de tráfego e do espaço aéreo.
* **2.3. "Cabine Estéril" (Sterile Cockpit):** Durante todas as fases críticas do voo (lançamento, recuperação e qualquer manobra tática), o operador deve se abster de atividades não essenciais.

### 3. Planejamento de Voo e Espaço Aéreo

* **3.1. Análise do Espaço Aéreo:**
    * Antes de submeter um plano de voo, o operador deve consultar a interface do USS para identificar todas as restrições de espaço aéreo estáticas (ex: áreas proibidas) e dinâmicas (ex: NOTAMs, outras operações autorizadas).
* **3.2. Submissão do Plano de Voo (4D):**
    * O operador deve submeter um volume 4D (latitude, longitude, altitude e janela de tempo) ao USS para análise.
* **3.3. Autorização do USS (Desconflito Estratégico):**
    * A operação **só pode ser iniciada** após o USS validar o plano de voo, realizar o desconflito estratégico contra todas as outras operações conhecidas e emitir uma autorização digital.
* **3.4. Briefing de Operação:**
    * O briefing pré-voo deve incluir:
        * Condições meteorológicas.
        * Status do Drone e baterias.
        * Revisão da autorização 4D emitida pelo USS.
        * Procedimentos de contingência (Seção 6).

### 4. Procedimentos Pré-Operação (Checklists)

* **4.1. Inspeção do Drone (RPA):**
    * Verificar estrutura, motores, hélices e links de C2 (Comando e Controle).
* **4.2. Inspeção do Controle (GCS):**
    * Verificar carga da GCS, software e links de C2.
* **4.3. Conexão com USS:**
    * Estabelecer conexão de dados entre a GCS e o USS.
    * Verificar na interface do USS se o status do voo planejado está "Aprovado" e "Pronto para Ativação".
    * **A decolagem é proibida** sem a confirmação de conexão e autorização do USS.

### 5. Execução da Operação (Controle e Monitoramento)

* **5.1. Ativação do Voo:**
    * No momento do lançamento, o operador deve "Ativar" o voo na interface do USS. O USS inicia o monitoramento de conformidade.
* **5.2. Monitoramento pelo Operador:**
    * O operador deve monitorar continuamente:
        * Telemetria do Drone (posição, altitude, bateria).
        * O "feed" de dados do USS, buscando alertas de tráfego ou do espaço aéreo.
* **5.3. Monitoramento de Conformidade (pelo USS):**
    * O sistema do USS monitora se a telemetria do Drone permanece dentro do volume 4D autorizado.
* **5.4. Alertas de Tráfego e Desconflito Tático:**
    * Ao receber um alerta de tráfego (outra aeronave) do USS, o operador deve avaliar a ameaça e estar preparado para executar manobras de contingência.
* **5.5. Pouso e Finalização:**
    * Após o pouso, o operador deve "Finalizar" o voo na interface do USS.
    * Isso libera o volume do espaço aéreo utilizado, permitindo que o USS o aloque para outras operações.

### 6. Procedimentos de Contingência e Emergência

* **6.1. Perda de Link C2 (Drone-Controle):**
    * O Drone executará o procedimento pré-programado (ex: RTH - Retorno à Base).
    * A GCS deve, automaticamente ou manualmente, notificar o USS sobre o status "Link Perdido" para que o USS possa alertar outros tráfegos na área.
* **6.2. Perda de Link de Dados (GCS-USS):**
    * O operador deve notificar verbalmente o USS (se um canal de rádio for definido) ou tentar restabelecer a conexão.
    * Se a conexão não for restabelecida, o operador deve encerrar o voo BVLOS na área segura mais próxima.
* **6.3. Desvio de Rota (Não-Conformidade):**
    * **Emergência:** Em caso de desvio imediato (ex: desviar de obstáculo ou meteorologia), o operador deve manobrar e, assim que possível, notificar o USS. O sistema USS detectará a não-conformidade e emitirá alertas para outros tráfegos.
    * **Não-Emergência:** Se o operador *precisar* alterar a rota, ele deve submeter um pedido de modificação de plano de voo ao USS e aguardar a autorização 4D atualizada.
* **6.4. Alerta de Bateria Crítica:**
    * O operador deve iniciar um pouso imediato no local de contingência mais próximo e notificar o USS sobre o pouso fora da área planejada.
* **6.5. Propagação da Contingência**
  * Em casos de detecção automática de contingência pelo USS, o Operador será notificado pela GCS quanto à melhor alternativa para encerrar ou corrigir a operação.
  * Em casos de declaração de contingência pelo Operador, o USS calcula a área necessária de volume não nominal automaticamente.
  * Para todos os casos, o USS é responsável por propagar a informação da contingência no ecossistema UTM.

# Exemplo Procedimento Operacional Padrão Ensaio III

### 1. Autoridade e Definições

Este SOP estabelece os procedimentos do Provedor de Serviços UTM (USS) para o **BR-UTM Field Test 3**, a ser conduzido no IEAv entre 15 e 17 de dezembro de 2025.

* **1.1. Operador (Piloto Remoto):** Responsável final pela condução segura do voo, operando em conformidade com as instruções e alertas deste USS e da ICA 100-40 (VLOS).
* **1.2. Provedor de Serviços UTM (USS):** Este USS, responsável pela prestação de serviços de gerenciamento, autorização, monitoramento de conformidade e resposta a contingências.
* **1.3. GCS (Estação de Controle de Solo):** Interface do operador para controle da RPA e para comunicação (envio de telemetria e recebimento de instruções) com este USS.
* **1.4. DSS (Discovery and Synchronization Service):** Plataforma central (InterUSS) para compartilhamento de dados de intenção operacional e restrições.
* **1.5. OIR (Operational Intent Reference):** O volume 4D (espaço e tempo) autorizado pelo USS para a operação.
* **1.6. Volume Não-Nominal:** Volume de contingência criado e publicado no DSS pelo USS em resposta a um desvio de voo.

### 2. Operação e Automação

* **2.1. Foco do Teste:** Este SOP foca na validação de gerenciamento de contingência em tempo real. O objetivo primário é **automação da interação com UTM, alerta imediato e resposta procedural** a desvios e mudanças no espaço aéreo.
* **2.2. Interface com USS:** A GCS manterá comunicação constante, enviando telemetria (via Remote ID) e recebendo alertas e instruções dinâmicas deste USS.
* **2.3. Padrões Mandatórios:** Todas as interações do USS com o DSS e com o operador seguirão os padrões **ASTM F3548-21** (Interoperabilidade) e **ASTM F3411-22a** (Remote ID).

### 3. Planejamento de Voo e Espaço Aéreo

* **3.1. Análise do Espaço Aéreo:**
    * Antes da submissão do OIR, o USS analisará o DSS para identificar todas as restrições estáticas e dinâmicas, incluindo `Volumes Não-Nominais` ativos de outras operações.
* **3.2. Submissão do OIR (4D):**
    * O operador submeterá um OIR 4D ao USS para análise de desconflito estratégico.
* **3.3. Autorização do USS:**
    * A operação só será autorizada (status "Aprovado") se o OIR estiver livre de conflitos com outras operações e *não* interceptar nenhum `Volume Não-Nominal` ativo.

### 4. Procedimentos Pré-Operação (Checklists)

* **4.1. Inspeção do Drone (RPA):**
    * Conforme SOP do operador. Verificação de links C2 e RTH por perda de C2.
* **4.2. Inspeção do Controle (GCS):**
    * Conforme SOP do operador. Verificação de software e link de dados com o USS.
* **4.3. Conexão e Check-in com USS:**
    * O operador deve estabelecer conexão de dados com o USS.
    * O operador deve executar o procedimento de **"Check-in Digital"** formal na interface do USS antes da ativação.
    * *Nota: Comunicações informais (ex: telefone) não substituem o check-in digital.*

### 5. Execução da Operação (Controle e Monitoramento)

* **5.1. Ativação do OIR:**
    * Após o "Check-in Digital", o operador ativará o OIR na GCS no momento do lançamento. O USS mudará o status do OIR para "Ativo" no DSS.
* **5.2. Monitoramento pelo Operador:**
    * O operador monitorará a telemetria e a interface do USS, pronto para executar instruções ou terminar o voo imediatamente.
* **5.3. Monitoramento de Conformidade (USS):**
    * O USS monitorará continuamente a telemetria (Remote ID) e a comparará com os limites laterais e verticais do OIR `Ativo` (Geo-Fence).
* **5.4. Gerenciamento de Restrições Dinâmicas:**
    * O USS monitora o DSS em tempo real para novas `Restrições` (Constraints).
    * Ao detectar uma nova `Restrição` que conflite com um OIR `Ativo`:
        1.  O USS medirá o tempo de detecção.
        2.  Enviará um alerta imediato à GCS do operador.
        3.  Fornecerá instruções de mitigação claras, baseadas nas informações da `Restrição` (ex: "Sair da Área Imediatamente", "Manter Posição", "Pousar em Alternativa").
* **5.5. Pouso e Check-out:**
    * Após o pouso (normal ou por contingência), o operador deve executar o procedimento de **"Check-out Digital"** formal na interface do USS.
    * O USS finalizará a operação e removerá o OIR do DSS.

### 6. Procedimentos de Contingência e Emergência

* **6.1. Perda de Link C2 (Drone-Controle):**
    * O Drone executará o RTH automático (conforme Safety Considerations).
    * O operador deve declarar imediatamente à equipe do DECEA e ao USS.
* **6.2. Detecção de Desvio de OIR (Geo-Fence):**
    * No momento em que o USS detectar (via Remote ID) que a RPA saiu dos limites do OIR `Ativo` ou da Zona UTM designada:
        1.  O USS emitirá um alerta imediato de "Desvio de OIR" ao operador.
        2.  O USS declarará internamente o voo como "Não-Nominal".
* **6.3. Criação de Volume Não-Nominal:**
    * Imediatamente após a detecção de desvio (6.2), ou contigências simuladas (6.6), o sistema USS irá:
        1.  Calcular automaticamente o `Volume Não-Nominal` (potencial área de voo) conforme os requisitos BRAC.
        2.  Publicar este `Volume Não-Nominal` no DSS para alertar todos os outros participantes do espaço aéreo.
* **6.4. Outras Emergências (Fly-away, Bateria Crítica):**
    * O operador deve declarar imediatamente qualquer "fly-away" ou perda de controle ao pessoal do DECEA e ao USS.
    * O USS tratará esta declaração como um desvio (6.2) e criará um `Volume Não-Nominal` (6.3).
* **6.5. Manobras de Contingência Padronizadas:**
    * Este USS está configurado para instruir manobras de contingência específicas (além do RTH padrão) com base no tipo de alerta (ex: "Pousar Imediatamente" em caso de desvio crítico ou "Manter Posição" em caso de conflito com tráfego).
* **6.6. Contigências simuladas**
  * Para os casos de contingências simuladas previstas nos cenários de teste do ensaio, o operador receberá do USS as informações necessárias através do GCS.

# Whitepaper

# <span style="font-size: 23pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">III Ensaio de Campo BR-UTM</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Data:</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> 15 a 17 de dezembro de 2025</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">**Realização**: Instituto de Controle do Espaço Aéreo (ICEA)</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Local:</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Instituto de Estudos Avançados (IEAv), São José dos Campos, SP.</span>

## <span style="font-size: 17pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1. Introdução</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">O terceiro ensaio de campo do projeto </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">BR-UTM</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> consolidou o avanço da maturidade operacional do Gerenciamento de Tráfego de Aeronaves Não Tripuladas no Brasil. Diferente de ensaios laboratoriais, este evento focou na </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">realidade do operador</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, permitindo que as empresas participantes (Aeroscan, Atech e Speedbird) propusessem seus próprios perfis de voo para testar a resiliência de seus sistemas em cenários de contingência, detecção de desvios e conformidade com volumes operacionais.</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Com o suporte tecnológico da </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Arsitec</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> na detecção de drones, o ensaio validou como a troca de dados entre o provedor USS (Unmanned Service Supplier) e o ecossistema UTM impacta diretamente a segurança da operação em tempo real.</span>

## <span style="font-size: 17pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2. Objetivos Operacionais</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Os ensaios foram estruturados para validar cinco pilares fundamentais para a segurança do voo:</span>

1. <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Resposta a Contingências em Tempo Real:</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Capacidade do USS de identificar restrições dinâmicas e guiar o piloto na mitigação do risco.</span>
2. <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Conformidade com a OIR (Operation Intent Region):</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Verificação automática de desvios geográficos e transição de estados de voo (Ativo → Não-Conforme → Contingência).</span>
3. <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Gestão de Volumes Não Nominais:</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Garantia de que, em caso de falha, o sistema reserve um volume de proteção (buffer) e impeça novos voos nessa área.</span>
4. <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Desempenho de Reação:</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Medição do tempo entre o evento adverso e a notificação ao operador.</span>
5. <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Automação de Check-in / Check-out:</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Ativação e desativação de OIR de maneira automática e transparente para o operador</span>

## <span style="font-size: 17pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">3. Infraestrutura e Ecossistema</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A arquitetura do ecossistema UTM (composta pelo DSS, Servidor de Autenticação e Provedores de Restrição) foi hospedada de forma híbrida entre o </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ICEA</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> e o </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">NCTI</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, garantindo a integridade dos dados e a visualização centralizada por parte do órgão regulador.</span>

## <span style="font-size: 17pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">4. Detalhamento dos Ensaios por Provedor</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Nesta edição, as empresas tiveram autonomia para propor voos que refletissem seus desafios operacionais diários, totalizando três missões por provedor.</span>

#### <span style="font-size: 13pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Atech</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A arquitetura da Atech utilizou a transmissão de </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">RemoteID Broadcast</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> da aeronave para uma antena local, que serviu de ponte para o USS. O operador recebeu os alertas em um tablet posicionado paralelamente ao rádio controle.</span>

- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 01: Gestão de Não-Conformidade e Contingência Temporal</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> O drone foi comandado para fora dos limites da OIR. O sistema detectou o desvio e alterou o status para </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Não-Conforme</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, disparando um prompt no tablet orientando o retorno imediato. O operador retornou à área e o sistema reativou o status "Ativo". Em seguida, o drone saiu novamente e permaneceu fora por mais de 60 segundos; o sistema então escalou a operação para </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Contingência</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, emitindo uma ordem de encerramento imediato.</span>
- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 02: Violação de Perímetro UTM (Saída de Área)</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Neste cenário, o drone cruzou o limite externo da Zona UTM. Diferente do voo anterior, a transição para o estado de </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Contingência</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> foi instantânea, refletindo a gravidade de operar em espaço aéreo não monitorado pelo sistema.</span>
- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 03: Resposta a Restrição Dinâmica em Voo</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Durante a navegação nominal, o ecossistema injetou uma restrição de espaço aéreo (volume de exclusão). O operador recebeu a notificação no tablet e executou o pouso de emergência conforme as instruções do USS.</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">  
    </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Nota Operacional:</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Durante as não-conformidades, a Atech projetou um buffer não-nominal restrito à aeronave. Na contingência, o volume projetado no sistema expandiu para cobrir toda a autonomia restante do drone.</span>

#### <span style="font-size: 13pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Aeroscan </span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A Aeroscan utilizou uma abordagem integrada, onde o software de gerenciamento UTM roda diretamente no controle remoto da aeronave, consolidando a consciência situacional em uma única tela.</span>

- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 01: Bloqueio de Ativação por Restrição Prévia</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> O operador solicitou uma OIR para um horário futuro. Antes da decolagem, criou-se uma restrição sobrepondo a área. Ao tentar iniciar a missão, o sistema bloqueou a ativação no solo, exibindo claramente o motivo da interdição.</span>
- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 02: Notificação de Restrição Dinâmica e Finalização</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Com o drone já em voo, uma nova restrição foi ativada. O sistema notificou o operador diretamente na interface de comando, que procedeu com a finalização segura da missão.</span>
- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 03: Desvio de OIR e Criação de Volume Não-Conforme</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> O operador forçou a saída lateral da área autorizada. O aplicativo sinalizou visualmente a entrada em estado não-conforme e o ecossistema UTM passou a exibir o volume de proteção atualizado para os demais atores do espaço aéreo.</span>

#### <span style="font-size: 13pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Speedbird </span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Como fabricante e operadora, a Speedbird integrou sua </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">GCS (Ground Control Station)</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> diretamente ao UTM, permitindo uma comunicação profunda entre a telemetria da aeronave e o serviço de rede.</span>

- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 01: Desconflito Estratégico em Solo</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> O USS da Speedbird realizou uma consulta ao DSS onde já constava uma OIR ativa de outro provedor. O sistema impediu que o operador iniciasse a operação, garantindo a separação básica entre aeronaves de diferentes empresas.</span>
- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 02: Decisão de Contingência em Restrição Dinâmica</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> Ao receber um alerta de restrição dinâmica durante o voo, o operador utilizou as informações da estação de pilotagem para selecionar a alternativa de pouso mais segura e rápida, encerrando a operação com sucesso.</span>
- <span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Voo 03: Teste de Cerca Virtual (Controle Manual)</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> O operador assumiu o comando manual e tentou acelerar o drone contra o limite da OIR. O sistema de navegação da aeronave, integrado aos dados de volume do UTM, considerou a inércia e impediu que o drone saísse da área, atuando como uma trava física automática de segurança.</span>

## <span style="font-size: 17pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">5. Conclusão Operacional</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Um grande ganho deste ensaio foi a validação da Lógica de Volumes Não-Nominais</span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">:</span>

<div align="left" dir="ltr" id="bkmrk-cen%C3%A1rio-objetivo-res" style="margin-left: 0pt;"><table style="border: none; border-collapse: collapse;"><colgroup><col width="144"></col><col width="170"></col><col width="288"></col></colgroup><tbody><tr style="height: 26.5pt;"><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Cenário</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Objetivo</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Resultado Observado</span>

</td></tr><tr style="height: 54.25pt;"><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Desvio de OIR</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Validar alertas de conformidade</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Transição precisa de "Ativa" para "Não-Conforme" com prompts de correção.</span>

</td></tr><tr style="height: 54.25pt;"><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Restrição Dinâmica</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Testar reação a fechamento de área</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Bloqueio imediato de ativação e comando de pouso em áreas seguras.</span>

</td></tr><tr style="height: 54.25pt;"><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Volume Não Nominal</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Proteção de terceiros</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">USS notificou o ecossistema criando áreas de exclusão baseadas na autonomia da bateria.</span>

</td></tr><tr style="height: 54.25pt;"><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Intervenção de Inércia</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Segurança física</span>

</td><td style="vertical-align: top; padding: 5pt 5pt 5pt 5pt; overflow: hidden; overflow-wrap: break-word; border: solid #000000 0.75pt;"><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">O drone respeitou os limites geográficos mesmo sob comando manual agressivo.</span>

</td></tr></tbody></table>

</div><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">O III Ensaio de Campo do BR-UTM provou que a tecnologia de suporte ao operador está pronta para lidar com imprevistos de forma automatizada. A principal lição para os operadores é que o UTM não atua apenas como um "fiscal", mas como uma ferramenta de </span><span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">consciência situacional.</span>

<span style="font-size: 11pt; font-family: Arial,sans-serif; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">A capacidade dos USSs de gerarem volumes não nominais e impedirem decolagens em áreas restritas garante que o erro humano ou falhas técnicas sejam contidos antes de afetarem a segurança geral do espaço aéreo. O próximo passo envolve a maturação dos tempos de resposta para operações em larga escala e a integração total com a detecção de drones não colaborativos via Arsitec.</span>