GET precisa de duas coisas além da credencial: o escopo write e um Idempotency-Key.
A chave é obrigatória, não oferecida
Mover um card executa Git. Um cliente cuja requisição estourou o tempo não sabe distinguir “falhou” de “a resposta se perdeu” — e o único jeito de descobrir é perguntar de novo, que é exatamente o que não é seguro fazer quando perguntar de novo pode fazer um segundo merge. Uma proteção opcional contra um merge duplicado silencioso é uma proteção que quem precisava dela não usou. Então ela é obrigatória em toda escrita, inclusive nas que não tocam repositório nenhum, porque uma regra da qual você precisa lembrar quando ela importa é uma regra da qual você não vai lembrar quando ela importar.header
obrigatório
Qualquer string de 16 a 255 caracteres, de
A-Z a-z 0-9 _ . : -. Faça-a única por tentativa-que-você-quer-dizer: um id de execução, um id de job, um hash da coisa que causou a escrita. Não um timestamp que você regera ao repetir — isso anula tudo.O que cada resposta quer dizer
1
Primeira vez: executa
A resposta é guardada sob a chave.
2
Mesma chave, mesma requisição: repete a resposta
Você recebe a primeira resposta de volta, com
Idempotent-Replay: true, e nada executa. É para este caso que o mecanismo inteiro existe.3
Mesma chave, requisição diferente: 409
Uma chave usada para duas requisições diferentes é um bug no seu código, e servir a resposta da outra requisição esconderia isso atrás de um sucesso.
4
Mesma chave enquanto a primeira ainda roda: 409
Espere. Rodar as duas seria o merge duplicado com etapas a mais.
Uma tentativa que falha libera a chave. Se uma escrita for rejeitada por um campo errado, conserte o campo e mande de novo na mesma chave — você não devia ter que inventar uma nova para corrigir um erro de digitação.
nightly não são a mesma requisição.
A credencial assina o que faz
Uma credencial de escrita é membro dos quadros que alcança — ela tem um usuário próprio, do mesmo jeito que um agente tem. Então o card que ela cria dizcreatedBy: the deploy script, a linha do tempo dele lê status_changed → the deploy script, e um comentário que ela escreve é dela.
É esse o ponto. Um quadro cujo histórico diz que alguém moveu um card é um quadro que não consegue responder a única pergunta que vale fazer depois que algo dá errado.
O que ela pode fazer
Dois portões, e eles respondem perguntas diferentes.403
Uma credencial emitida só para leitura ouve isso:
This credential was issued for reading only. Issue one with the write scope.403
Por rota, contra o papel que esta credencial tem no quadro do header:
That needs the member role or higher, and this credential holds viewer on workspace 83729280714017040.Mover um card
A escrita que executa Git, e a que se lê com atenção.statusId vem de /v1/board, onde cada coluna carrega o próprio id e o minRole necessário para mover um card para dentro dela.
Releases
A metade que mais vale automatizar, porque estes são os gestos que uma pipeline tem motivo para rodar por agendamento em vez de na mão.promote responde com um resultado em vez de falhar: um release de doze cards em que nove se moveram e três foram recusados é notícia, não erro. As recusas estão no corpo, cada uma nomeando o seu card e o repositório que disse não.
O resto
O que uma credencial não pode fazer
Duas escritas existem no produto e deliberadamente não estão nesta API.Uma proposta espera justamente porque uma pessoa deveria olhar para ela, e é o provedor que garante isso. Uma credencial que pudesse aprovar uma seria um jeito de contornar a revisão escrevendo um script.
Dar acesso a um quadro é o ato sobre o qual todas as outras permissões se apoiam. Uma credencial que pode conceder acesso é uma cuja revogação já não limita o que ela fez.