O contrato inclui o modelo
JSON válido é apenas o primeiro controlo. O modelo define nomes, tipos, chaves, obrigatoriedade e relações entre dados. Para um campo YANG boolean, false é um booleano e "false" é texto. Outros tipos têm regras próprias: na codificação RFC 7951, int64 e uint64 usam strings JSON para preservar os valores, pelo que converter todos os números para números JSON também está errado. Guarda a revisão do módulo e as capacidades efetivas do alvo. Num payload de interface, confirma que a chave no corpo corresponde à chave do recurso. O laboratório desta aula tem um esquema manual reduzido, com name e enabled obrigatórios; esses requisitos são do exercício, não uma descrição completa de ietf-interfaces.
A extensão da alteração depende do pedido
PUT cria ou substitui o recurso alvo. Se enviares apenas parte do conteúdo de um recurso complexo, podes remover configuração opcional omitida ou ativar valores por defeito definidos pelo modelo. Escolhe o alvo com cuidado e compara o resultado esperado antes de enviar. Um plain patch RESTCONF faz merge; YANG Patch usa outro media type e uma lista ordenada de operações, permitindo expressar decisões mais precisas. Não envies o corpo de um formato com o Content-Type de outro. Consulta os formatos suportados, por exemplo através de Accept-Patch, quando aplicável. Uma sequência de pedidos HTTP separados não ganha atomicidade conjunta só porque usa PATCH em todos os passos.
Concorrência entre duas leituras
Dois operadores leem a mesma versão. O primeiro desativa uma interface; o segundo muda a descrição usando uma cópia antiga que ainda diz enabled=true. Uma substituição sem condição pode reativar a interface e apagar a primeira decisão. Quando o servidor fornece validadores adequados, conserva o ETag do recurso e envia If-Match na escrita correspondente. Um 412 indica que a condição não foi satisfeita: volta a ler, reconcilia o diff com a intenção autorizada e decide de novo. Remover o cabeçalho para fazer o pedido passar destrói a proteção. O valor * apenas exige a existência de uma representação atual; não prova que o conteúdo é igual à versão anteriormente lida.
Erro, repetição e evidência
Um timeout deixa incerteza: o cliente pode ter perdido a resposta depois de o servidor aplicar a mudança. Consulta o estado antes de repetir uma operação com efeitos. Idempotência descreve o efeito pretendido de pedidos iguais, não a ausência de logs nem uma garantia de que os códigos de resposta se repetem. Se aparecer 415, confirma o formato suportado; se o erro assinalar um valor inválido, revê o corpo e o modelo. Um 403 exige análise da autorização. Aumentar o número de tentativas não corrige essas causas. O sucesso de uma escrita deve ser seguido de leitura e verificação operacional. Para uma interface, configuração enabled=true não prova oper-status up nem capacidade de transportar a aplicação.
Laboratório e limites de aceitação
Executa o laboratório HTTPS local e prevê os resultados antes de consultar a evidência. Dois clientes leem a mesma versão; a escrita antiga é recusada, a alteração estreita conserva o estado atual e uma substituição sem condição demonstra perda de uma mudança intermédia. O exercício também rejeita um booleano em texto, uma chave diferente, um formato não suportado e um certificado sem confiança ou com nome incorreto. Foram feitas duas execuções com 27 verificações cada. O servidor usa dados sintéticos e validação manual; não implementa RESTCONF, YANG completo ou NETCONF. Para aceitar um equipamento real, repete os controlos aplicáveis na versão e modelo exatos e acrescenta autorização, dados operacionais e tráfego da aplicação.
# From the project root, with Python 3 and /usr/bin/openssl available:
python3 content/labs/ccnp-api-transactions/run.py --output /tmp/ccnp-api-evidence.json
# Inspect checks and transcript in the output.
# The fixture uses loopback HTTPS and a temporary local certificate.
# It is not a Cisco device, NETCONF endpoint or conforming RESTCONF server.
A desativa uplink-7. B tenta alterar a descrição com a versão antiga e recebe 412. B volta a ler e envia apenas a mudança autorizada, conservando enabled=false.
Armadilhas comuns
PUT parcial como merge; string como boolean; 412 como erro de credencial; wildcard como versão; HTTP 204 como aplicação saudável.
Tópicos relacionados: NETCONF e recuperação · Modelos e tipos de dados
Protege o estado que leste e comprova o estado que ficou.
Referência: RESTCONF protocol · 350-401 ENCOR v1.2, effective 2026-03-19; core component of CCNP Enterprise