{
"approver": "oncall-sre",
"reason": "aumento de memória confirmado"
}
{
"apiVersion": "v1",
"kind": "ApprovalRequest",
"spec": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"resource": "payment-service-oom-kill-1773933600",
"action": "AdjustResources",
"reason": "production-changes",
"requestedBy": "chatcli-operator",
"state": "Pending",
"approvedBy": "oncall-sre (api-key: sre-oncall)",
"decisionReason": "aumento de memória confirmado",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
},
"decisions": [
{
"approver": "oncall-sre (api-key: sre-oncall)",
"decision": "approved",
"reason": "aumento de memória confirmado",
"timestamp": "2026-03-19T15:24:40Z"
}
]
},
"status": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"resource": "payment-service-oom-kill-1773933600",
"action": "AdjustResources",
"reason": "production-changes",
"requestedBy": "chatcli-operator",
"state": "Pending",
"approvedBy": "oncall-sre (api-key: sre-oncall)",
"decisionReason": "aumento de memória confirmado",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
},
"decisions": [
{
"approver": "oncall-sre (api-key: sre-oncall)",
"decision": "approved",
"reason": "aumento de memória confirmado",
"timestamp": "2026-03-19T15:24:40Z"
}
]
},
"resourceMeta": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"uid": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
}
}
}
Aprovar Solicitação
Aprova uma solicitação de aprovação, permitindo que a remediação seja executada
{
"approver": "oncall-sre",
"reason": "aumento de memória confirmado"
}
{
"apiVersion": "v1",
"kind": "ApprovalRequest",
"spec": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"resource": "payment-service-oom-kill-1773933600",
"action": "AdjustResources",
"reason": "production-changes",
"requestedBy": "chatcli-operator",
"state": "Pending",
"approvedBy": "oncall-sre (api-key: sre-oncall)",
"decisionReason": "aumento de memória confirmado",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
},
"decisions": [
{
"approver": "oncall-sre (api-key: sre-oncall)",
"decision": "approved",
"reason": "aumento de memória confirmado",
"timestamp": "2026-03-19T15:24:40Z"
}
]
},
"status": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"resource": "payment-service-oom-kill-1773933600",
"action": "AdjustResources",
"reason": "production-changes",
"requestedBy": "chatcli-operator",
"state": "Pending",
"approvedBy": "oncall-sre (api-key: sre-oncall)",
"decisionReason": "aumento de memória confirmado",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
},
"decisions": [
{
"approver": "oncall-sre (api-key: sre-oncall)",
"decision": "approved",
"reason": "aumento de memória confirmado",
"timestamp": "2026-03-19T15:24:40Z"
}
]
},
"resourceMeta": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"uid": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
}
}
}
approval-payment-service-oom-kill-1773933600-plan-1)400.Pending, do mesmo jeito que a annotation platform.chatcli.io/approve: ela adiciona uma entrada a status.decisions com o aprovador, o motivo e um timestamp. Ela nunca define status.state por conta própria. O ApprovalReconciler então avalia as decisões contra a regra: quando as aprovações necessárias chegam (uma no manual, requiredApprovers aprovadores distintos no quorum) e a change window está aberta, a solicitação vira Approved e o RemediationPlan que aguardava passa para Executing. A resposta volta logo depois de a decisão ser registrada, então costuma ainda mostrar Pending, com a nova entrada em decisions e em approvedBy. O item vem em spec e em status, mais resourceMeta.
- Identidade do aprovador. O aprovador é gravado como
<approver> (api-key: <identidade>), onde a identidade é onameda entrada da API key, senão odescription, senão uma impressão digitalkey-<hash>(dev-modeno dev mode). O nome digitado tem os espaços das pontas removidos, perde caracteres de controle e é cortado em 128 caracteres. - O quórum conta API keys. Duas aprovações feitas com a mesma chave contam uma vez, sejam quais forem os nomes digitados, e a mesma chave não decide duas vezes sobre uma solicitação. Uma chave compartilhada, ou o dev mode, não satisfaz
requiredApprovers: 2: dê a cada aprovador a sua própria chave. 409quando a solicitação não está maisPending(já aprovada, rejeitada ou expirada), ou quando a mesma chave já registrou uma decisão nela.- Change window. Uma aprovação registrada fora da janela da regra é mantida; a solicitação vira
Approvedquando a janela abre e não expira enquanto espera. Veja Fluxo de Aprovação.
{
"approver": "oncall-sre",
"reason": "aumento de memória confirmado"
}
{
"apiVersion": "v1",
"kind": "ApprovalRequest",
"spec": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"resource": "payment-service-oom-kill-1773933600",
"action": "AdjustResources",
"reason": "production-changes",
"requestedBy": "chatcli-operator",
"state": "Pending",
"approvedBy": "oncall-sre (api-key: sre-oncall)",
"decisionReason": "aumento de memória confirmado",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
},
"decisions": [
{
"approver": "oncall-sre (api-key: sre-oncall)",
"decision": "approved",
"reason": "aumento de memória confirmado",
"timestamp": "2026-03-19T15:24:40Z"
}
]
},
"status": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"resource": "payment-service-oom-kill-1773933600",
"action": "AdjustResources",
"reason": "production-changes",
"requestedBy": "chatcli-operator",
"state": "Pending",
"approvedBy": "oncall-sre (api-key: sre-oncall)",
"decisionReason": "aumento de memória confirmado",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
},
"decisions": [
{
"approver": "oncall-sre (api-key: sre-oncall)",
"decision": "approved",
"reason": "aumento de memória confirmado",
"timestamp": "2026-03-19T15:24:40Z"
}
]
},
"resourceMeta": {
"name": "approval-payment-service-oom-kill-1773933600-plan-1",
"namespace": "production",
"uid": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"creationTimestamp": "2026-03-19T15:21:05Z",
"labels": {
"platform.chatcli.io/issue": "payment-service-oom-kill-1773933600",
"platform.chatcli.io/policy": "production-changes",
"platform.chatcli.io/remediation-plan": "payment-service-oom-kill-1773933600-plan-1"
}
}
}
{
"apiVersion": "v1",
"kind": "Error",
"error": "Bad Request",
"code": 400,
"message": "approver is required"
}
{
"apiVersion": "v1",
"kind": "Error",
"error": "Conflict",
"code": 409,
"message": "approval request is not pending: state is Approved"
}
{
"apiVersion": "v1",
"kind": "Error",
"error": "Not Found",
"code": 404,
"message": "approval not found: approvalrequests \"approval-payment-service-oom-kill-1773933600-plan-9\" not found in any namespace"
}
Autorizações
API key sent in the X-API-Key header. Keys are read from the Secret chatcli-operator-secrets, key api-keys (fallback: ConfigMap chatcli-operator-config, key api-keys) in the operator namespace, as a YAML list of {key, role, name, description} (name is the identity recorded on approval decisions); the operator chart creates it only with apiKeys.create: true. Roles: viewer < operator < admin — any other role string is denied everywhere. Changes are picked up within about 30 seconds; deleting both the Secret and the ConfigMap revokes every key. With no keys configured every /api/ call returns 401, unless CHATCLI_OPERATOR_DEV_MODE=true, which grants admin without a key (development only).
Parâmetros de caminho
ApprovalRequest name.
"payment-oom-plan-1-approval"
Parâmetros de consulta
Namespace of the object. When omitted, all namespaces are searched and the first object with this name is used.