Teste os limites do ciclo de vida antes de Produção
Utilize um projeto Sandbox dedicado, referências de encomenda sintéticas e caixas de correio que controla. Nunca utilize contactos de clientes reais num exemplo. Guarde os IDs e o conteúdo exato do pedido em cada passo para poder repetir com segurança uma resposta incerta.
| Cenário | Procedimento | Provas esperadas |
|---|---|---|
| Primeira autenticação | Cenário de início rápido com delivery:read | 200, resultado estável do cenário e ID do pedido |
| Endereço aceite | Crie uma confirmação com expiração futura; abra o URL do destinatário e submeta a localização proposta | Instantâneo confirmado imutável |
| Endereço corrigido | Crie outro pedido; escolha outra localização válida no processo do destinatário | Instantâneo corrigido; proposta original conservada |
| Cancelamento | Cancele um novo pedido pendente através da API de confirmação de endereço | Cancelled (cancelado); o acesso anterior do destinatário não permite concluir |
| Expiração | Crie um pedido de curta duração, espere até depois de expiresAt e abra a ligação | Expirado/indisponível; sem instantâneo concluído |
| Em trânsito/no depósito/em distribuição | Submeta os comandos de entrega documentados | Histórico ordenado de eventos canónicos |
| Tentativa falhada e RTS | Submeta uma resolução de entrega falhada com RecipientUnavailable e attemptCount: 3 | Uma devolução RTS; provas duplicadas não criam outra |
| Entregue com prova | Configure Signature/Photo, submeta primeiro a prova correspondente e depois CompleteDelivery com o seu proofId | Delivered (entregue); prova omitida/incorreta rejeitada |
| Devolução do destinatário | Associe uma expedição Delivered com contacto de teste verificado; peça recolha ou entrega num ponto | O pedido de devolução entra no processo de aprovação documentado |
| Devolução canónica do cliente | Crie e aprove uma devolução sintética de cliente | Requested e depois Approved; histórico original de saída inalterado |
| Provas de recolha e receção | Envie PNGs de assinaturas sintéticas separados para recolha e receção | Cada evento aceita apenas a prova correspondente |
| Âmbito errado | Emita uma chave só de leitura; tente criar um evento | 403; sem alteração |
| Ambiente errado | Leia um recurso Sandbox com uma chave de outro ambiente | Recurso inacessível |
| Evento duplicado | Repita o UUID e o conteúdo exatos do evento guardado | Sem segundo evento canónico |
| Evento fora de ordem | Conclua antes da entrega física obrigatória | 409; inspecione/corrija o estado em vez de mudar o UUID |
| Nova tentativa de webhook | O recetor devolve 503 antes da gravação duradoura e depois recupera | Nova tentativa aceite uma vez |
| Duplicado/reenvio de webhook | Reenvie uma entrega sintética já aceite | Mesmo ID de evento; sem ação de negócio duplicada |
| Rotação do acesso à recolha | Emita uma segunda ligação de recolha não concluída e tente a anterior | Acesso anterior rejeitado |
| Pausa nas escritas de devolução | Quando for devolvido returns_paused, repita mais tarde com os mesmos IDs | A escrita é bem-sucedida após o serviço retomar; as leituras continuam disponíveis |
O endpoint de cenários só de leitura também aceita fault=error-403, error-404,
error-409, error-429 e error-500 para exercitar o tratamento dos estados. Estas falhas
simulam respostas; não comprovam transições reais do ciclo de vida nem alteram dados.