# Explicador de caminhos RESTCONF do F5OS

> Cole um caminho RESTCONF do F5OS e receba a decodificação segmento a segmento: o prefixo do módulo YANG, a hierarquia de contêineres, chaves de lista como tenant=tenant1 e a convenção de prefixação módulo:nó. Explica também a dualidade entre a porta 8888 /restconf e a porta 443 /api, do F5OS 1.8. Local e offline.

- Tool: https://ronutz.com/pt-BR/tools/f5os-restconf-path-explainer
- Family: Redes

---

## O que faz

Cole um caminho RESTCONF do F5OS e a ferramenta o decodifica segmento a segmento: a raiz da API, os prefixos de módulo YANG, a hierarquia de contêineres e quaisquer chaves de lista, como `tenant=tenant1`. Ela nomeia os módulos que reconhece e diz o que cada um governa. Analisa apenas o texto do caminho: nada é buscado, nenhum schema é consultado e nada sai do navegador.

## Por que um caminho do F5OS precisa ser decodificado

O F5OS, a camada de plataforma sob os tenants no VELOS e no rSeries, é operado por **RESTCONF** (RFC 8040) sobre dados modelados em **YANG**, e não por iControl REST sobre o modelo de objetos do TMOS. Quem tem fluência em `/mgmt/tm/ltm/virtual` esbarra em `/restconf/data/f5-tenants:tenants/tenant=tenant1/config` sem ter como distinguir o que é módulo, o que é contêiner e o que seleciona uma instância. Isso é um problema de vocabulário, não de dificuldade, e é o que esta ferramenta elimina.

## O prefixo de módulo e a convenção de prefixação

`f5-tenants:tenants` é o nó `tenants` no módulo YANG `f5-tenants`. O F5OS usa módulos **OpenConfig**, neutros em relação a fabricante — `openconfig-system`, `openconfig-interfaces`, `openconfig-vlan` — ao lado dos módulos próprios da F5, prefixados com `f5-`. **Apenas o primeiro nó de um módulo leva o prefixo**; os nós abaixo dele são escritos sem prefixo, porque o herdam. Um prefixo que reaparece no meio do caminho significa que o caminho atravessou para outro módulo, e essa é a observação mais útil ao ler um caminho desses.

## Chaves de lista e a dualidade de portas

O RESTCONF endereça uma entrada de lista colocando a chave no próprio caminho — `tenant=tenant1` seleciona um tenant da lista `tenants` — em vez de usar um parâmetro de consulta. A ferramenta marca essas entradas separadamente dos contêineres simples.

Ela também explica o arranjo de portas que confunde: o F5OS originalmente expunha o RESTCONF na **porta 8888**, sob `/restconf`, e a partir do **F5OS 1.8** a mesma API é alcançável na porta HTTPS padrão, sob `/api`. Dois caminhos de aparência diferente podem endereçar o mesmo recurso. A autenticação usa o cabeçalho `X-Auth-Token`, e esse token é ele próprio um JWT, portanto expira.

## O que ela não faz

A tabela de módulos é finita e deliberadamente curta. Se um caminho usar um módulo que a ferramenta não conhece, ela decodifica a estrutura e **diz que o módulo não é reconhecido, em vez de descrevê-lo por palpite**. Ela também não valida nada contra um schema, porque não tem nenhum: não consegue dizer se um nó existe na sua versão do F5OS, apenas como está construído o caminho que você digitou.

## Como usar

Cole um caminho simples, uma URL completa ou um caminho com query string. Os parâmetros de consulta são separados e mencionados, porque qualificam a requisição em vez de identificar o recurso.

## Standards and references

- [F5OS RESTCONF API](https://clouddocs.f5.com/api/f5os/)
- [RFC 8040 - RESTCONF Protocol](https://www.rfc-editor.org/rfc/rfc8040)
- [OpenConfig - vendor-neutral YANG models](https://www.openconfig.net/)

## Related reading

- [Lendo um caminho do iControl REST](https://ronutz.com/pt-BR/learn/icontrol-rest-paths.md): Por que as URLs do iControl REST têm tis, como o módulo e a coleção são organizados, o que significa um caminho de partição e pastas, e quais opções de consulta mudam o tamanho da resposta.
- [Lendo um caminho RESTCONF do F5OS](https://ronutz.com/pt-BR/learn/f5os-restconf-paths.md): O F5OS é operado por RESTCONF sobre YANG, e não por iControl REST sobre o modelo de objetos do TMOS. Este artigo explica como ler um caminho: o prefixo de módulo, a hierarquia de contêineres, as chaves de lista, a convenção módulo:nó e a dualidade entre 8888 e 443.
- [Os três estados em que um tenant do F5OS pode estar](https://ronutz.com/pt-BR/learn/f5os-tenant-lifecycle.md): Configured, provisioned, deployed — e a regra de que mudar vCPU ou memória significa voltar por eles. Além da fórmula de memória publicada, e por que um exemplo de VELOS não vai commitar num rSeries.
