{"openapi":"3.1.0","info":{"title":"asaas-app","description":"\nMiddleware de pagamentos PIX sobre a API Asaas — **somente producao** (`$aact_prod_*`).\n\n## Fluxo de configuracao\n\n1. `POST /config/url` → acesse a `verify_url` retornada para confirmar o dominio\n2. `POST /config/internal` → URL interna que recebera copias de eventos\n3. `POST /config/key` → salva API key e retorna token + instrucoes do Mecanismo de Seguranca\n4. Configure o token e a URL validadora no painel Asaas\n5. `POST /config/key/confirm` → registra o webhook em `<url>/webhook/`\n\n## Estados de um pagamento\n\n```\nSCHEDULED → QUEUED → SUBMITTING → SUBMITTED → PAID\n                 ↘ AWAITING_BALANCE ↗         ↘ FAILED\n                                               ↘ CANCELLED\n```\n\n- **SCHEDULED** — agendado para data/hora futura (America/Sao_Paulo)\n- **QUEUED** — pronto para submeter ao Asaas\n- **SUBMITTING** — claim atomico local; chamada ao Asaas em andamento\n- **SUBMITTED** — Asaas aceitou; aguardando webhook `TRANSFER_DONE`\n- **AWAITING_BALANCE** — saldo insuficiente; reprocessado automaticamente\n- **PAID / FAILED / CANCELLED** — estados terminais\n\n## Regras de QR Code\n\n- QR com valor fixo (tag 54) nao aceita `amount` diferente\n- QR sem valor fixo exige `amount` no corpo\n- QR dinamico **nao pode ser agendado**\n- Use `POST /payment/qrcode/analyze` para inspecionar um BR Code antes de pagar\n\n## Formato de erros\n\nTodos os erros de dominio vem como `HTTP 4xx/5xx` com corpo:\n\n```json\n{\"detail\": \"<codigo>\"}\n```\n\nQuando o codigo tem contexto dinamico, ele vem como prefixo + `:` + detalhe —\nex: `holder_mismatch: expected 074... got 123...`.\n\n## Notificacao interna (internal_url)\n\nA cada transicao de status, o asaas-app envia `POST` para a `internal_url` configurada:\n\n```json\n{\n  \"payment_id\": \"pay_a1b2c3d4e5f6a7b8\",\n  \"kind\": \"pixkey\",\n  \"external_id\": \"0f41a42a-cf2d-425d-8912-c865a55ec1b6\",\n  \"status\": \"SUBMITTED\"\n}\n```\n\n- **kind** = `\"pixkey\"` → `external_id` sempre preenchido (UUID)\n- **kind** = `\"qrcode\"` → `external_id` sempre `null` (nao ha pixkey associada)\n- **status** pode ser: `SCHEDULED`, `QUEUED`, `SUBMITTED`, `PAID`, `FAILED`, `CANCELLED`, `AWAITING_BALANCE`\n\nNotificacoes duplicadas sao suprimidas: `AWAITING_BALANCE` so dispara na primeira transicao,\nnao nos retries do worker.\n\n## Catalogo de erros\n\n### Erros — `config`\n\n| Codigo | Significado |\n|--------|-------------|\n| `external_url_not_set` | Nenhuma URL publica registrada. Execute POST /config/url. |\n| `external_url_not_verified` | Abra a verify_url no navegador antes de seguir. |\n| `nonce_not_found` | Nonce invalido ou ja consumido. |\n| `nonce_already_used` | Nonce ja consumido; gere outro em /config/url. |\n| `nonce_expired` | Nonce expirou (TTL 300s); gere outro. |\n| `production_key_required` | API key sandbox rejeitada; use $aact_prod_*. |\n| `asaas_rejected_key` | Asaas recusou a chave; veja o sufixo :detail. |\n| `set_key_not_done` | Chamou /config/key/confirm antes de /config/key. |\n| `onboarding_send_failed` | URL interna nao respondeu (network error). |\n| `onboarding_http_<code>` | URL interna respondeu non-2xx ao receber o doc de onboarding. |\n| `asaas_error` | Falha upstream no Asaas (502); veja o sufixo. |\n\n### Erros — `pixkey`\n\n| Codigo | Significado |\n|--------|-------------|\n| `asaas_api_key_not_set` | Rode POST /config/key primeiro. |\n| `external_id_required` | external_id nao pode ser vazio. |\n| `external_id_already_exists` | Ja existe pixkey com esse external_id. |\n| `pix_key_already_registered` | Essa chave Pix ja esta cadastrada (em outro external_id). |\n| `invalid_key_type` | Use CPF, CNPJ, EMAIL, PHONE ou EVP. |\n| `invalid_document_length` | CPF precisa de 11 digitos, CNPJ de 14. |\n| `invalid_cpf_format` | CPF fora do padrao 11 digitos. |\n| `invalid_cnpj_format` | CNPJ fora do padrao 14 digitos. |\n| `invalid_email_format` | Email fora do RFC 5322 simplificado. |\n| `invalid_phone_format_expected_+55DDDNNNNNNNNN` | Telefone precisa vir como +55 DDD + numero. |\n| `invalid_evp_format` | EVP precisa ser um UUID valido. |\n| `holder_mismatch` | CPF/CNPJ do titular no DICT nao bate com o esperado; veja o sufixo. |\n| `dict_lookup_failed` | Asaas rejeitou o lookup DICT; veja o sufixo. |\n| `not_found` | Pixkey nao encontrada (404). |\n\n### Erros — `payment`\n\n| Codigo | Significado |\n|--------|-------------|\n| `pixkey_not_found` | O pixkey_external_id informado nao existe — cadastre em POST /pixkey. |\n| `invalid_amount` | amount deve ser numero positivo. |\n| `invalid_date` | Data fora do formato YYYY-MM-DD ou no passado; veja o sufixo. |\n| `payment_id_already_exists` | Ja existe payment com esse payment_id (idempotencia). |\n| `invalid_qrcode_payload` | BR Code nao foi parseado como TLV valido. |\n| `qrcode_amount_required` | Esse QR nao tem valor fixo; envie amount. |\n| `qrcode_fixed_amount_mismatch` | Esse QR tem valor fixo diferente; veja o sufixo. |\n| `dynamic_qrcode_scheduling_not_supported` | QR dinamico nao pode ser agendado (pode expirar). |\n| `cannot_cancel_status` | Status atual nao permite cancelar; veja o sufixo. |\n| `asaas_cancel_failed` | Asaas rejeitou o cancelamento; veja o sufixo. |\n| `not_found` | Payment nao encontrado (404). |\n\n### Erros — `webhook`\n\n| Codigo | Significado |\n|--------|-------------|\n| `invalid_token` | Header asaas-access-token ausente ou incorreto (401). |","version":"0.1.0"},"paths":{"/config/url":{"post":{"tags":["config"],"summary":"Registrar URL publica","description":"Cria um nonce temporario para validar a URL publica base do asaas-app.","operationId":"set_external_url_config_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUrlRequest"}}},"required":true},"responses":{"200":{"description":"Nonce e URL de verificacao para provar que o dominio aponta para este app.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/url/verify/{nonce}":{"get":{"tags":["config"],"summary":"Validar URL publica","description":"Consome o nonce de `/config/url` e persiste a URL publica.","operationId":"verify_external_url_config_url_verify__nonce__get","parameters":[{"name":"nonce","in":"path","required":true,"schema":{"type":"string","title":"Nonce"}}],"responses":{"200":{"description":"Pagina HTML simples confirmando se o nonce foi aceito.","content":{"text/html":{"schema":{"type":"string"}}}},"400":{"description":"nonce_not_found | nonce_already_used | nonce_expired"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/internal":{"post":{"tags":["config"],"summary":"Registrar URL interna","description":"Envia o onboarding para o sistema interno e so salva a URL se ele responder 2xx.","operationId":"set_internal_url_config_internal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetInternalUrlRequest"}}},"required":true},"responses":{"200":{"description":"URL salva apos receber com sucesso o documento de onboarding.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigInternalResponse"}}}},"400":{"description":"onboarding_send_failed; onboarding_http_<code>","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"onboarding_send_failed":{"summary":"onboarding_send_failed","value":{"detail":"onboarding_send_failed"}},"onboarding_http_<code>":{"summary":"onboarding_http_<code>","value":{"detail":"onboarding_http_<code>"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/key":{"post":{"tags":["config"],"summary":"Registrar API key Asaas","description":"Valida uma API key de producao, salva segredo e gera instrucoes de configuracao manual.","operationId":"set_api_key_config_key_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetKeyRequest"}}},"required":true},"responses":{"200":{"description":"Token de seguranca, URL validadora, endpoint de webhook e instrucoes para o painel Asaas.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetKeyResponse"}}}},"400":{"description":"external_url_not_set; production_key_required; asaas_rejected_key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"external_url_not_set":{"summary":"external_url_not_set","value":{"detail":"external_url_not_set"}},"production_key_required":{"summary":"production_key_required","value":{"detail":"production_key_required"}},"asaas_rejected_key":{"summary":"asaas_rejected_key","value":{"detail":"asaas_rejected_key"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/config/key/confirm":{"post":{"tags":["config"],"summary":"Confirmar API key e recriar webhook","description":"Registra ou recria o webhook oficial do Asaas apontando para `<external_url>/webhook/`.","operationId":"confirm_api_key_config_key_confirm_post","responses":{"200":{"description":"Webhook Asaas recriado em /webhook/ com authToken sincronizado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigConfirmResponse"}}}},"400":{"description":"set_key_not_done; external_url_not_set","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"set_key_not_done":{"summary":"set_key_not_done","value":{"detail":"set_key_not_done"}},"external_url_not_set":{"summary":"external_url_not_set","value":{"detail":"external_url_not_set"}}}}}},"502":{"description":"asaas_error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"asaas_error":{"summary":"asaas_error","value":{"detail":"asaas_error"}}}}}}}}},"/config/status":{"get":{"tags":["config"],"summary":"Consultar status de configuracao","description":"Health operacional agregado. `errors: []` indica configuracao pronta.","operationId":"get_status_config_status_get","responses":{"200":{"description":"Conta, saldo, webhook registrado, configuracoes mascaradas e erros pendentes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigStatusResponse"}}}}}}},"/payment":{"post":{"tags":["payment"],"summary":"Criar pagamento imediato por pixkey","description":"Cria uma transferencia Pix imediata para uma pixkey previamente cadastrada.","operationId":"create_pixkey_imediate_payment_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PixkeyImediateRequest"}}}},"responses":{"200":{"description":"Payment criado, notificado como QUEUED e submetido em background.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"400":{"description":"pixkey_not_found; invalid_amount; payment_id_already_exists","content":{"application/json":{"examples":{"pixkey_not_found":{"summary":"pixkey_not_found","value":{"detail":"pixkey_not_found"}},"invalid_amount":{"summary":"invalid_amount","value":{"detail":"invalid_amount"}},"payment_id_already_exists":{"summary":"payment_id_already_exists","value":{"detail":"payment_id_already_exists"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["payment"],"summary":"Listar pagamentos","operationId":"list_payments_payment_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Lista paginada de payments, ordenada do mais recente para o mais antigo.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PaymentResponse"},"title":"Response List Payments Payment Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payment/scheduled":{"post":{"tags":["payment"],"summary":"Agendar pagamento por pixkey","description":"Agenda transferencia Pix para a data/hora local America/Sao_Paulo.","operationId":"create_pixkey_scheduled_payment_scheduled_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PixkeyScheduledRequest"}}},"required":true},"responses":{"200":{"description":"Payment agendado, sera submetido automaticamente no horario informado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"400":{"description":"pixkey_not_found; invalid_amount; invalid_date; payment_id_already_exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"pixkey_not_found":{"summary":"pixkey_not_found","value":{"detail":"pixkey_not_found"}},"invalid_amount":{"summary":"invalid_amount","value":{"detail":"invalid_amount"}},"invalid_date":{"summary":"invalid_date","value":{"detail":"invalid_date"}},"payment_id_already_exists":{"summary":"payment_id_already_exists","value":{"detail":"payment_id_already_exists"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payment/qrcode":{"post":{"tags":["payment"],"summary":"Criar pagamento imediato por QR Code","description":"Paga um BR Code copia-e-cola. Use `/payment/qrcode/analyze` quando houver duvida.","operationId":"create_qrcode_imediate_payment_qrcode_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeImediateRequest"}}},"required":true},"responses":{"200":{"description":"Payment criado, validado pelas regras de QR e submetido em background.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"400":{"description":"invalid_qrcode_payload; qrcode_amount_required; qrcode_fixed_amount_mismatch; invalid_amount; payment_id_already_exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"invalid_qrcode_payload":{"summary":"invalid_qrcode_payload","value":{"detail":"invalid_qrcode_payload"}},"qrcode_amount_required":{"summary":"qrcode_amount_required","value":{"detail":"qrcode_amount_required"}},"qrcode_fixed_amount_mismatch":{"summary":"qrcode_fixed_amount_mismatch","value":{"detail":"qrcode_fixed_amount_mismatch"}},"invalid_amount":{"summary":"invalid_amount","value":{"detail":"invalid_amount"}},"payment_id_already_exists":{"summary":"payment_id_already_exists","value":{"detail":"payment_id_already_exists"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payment/qrcode/analyze":{"post":{"tags":["payment"],"summary":"Analisar QR Code sem pagar","description":"Inspeciona o BR Code antes de decidir se `amount` e permitido ou obrigatorio.","operationId":"analyze_qrcode_payment_qrcode_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeAnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Analise TLV/BR Code com tipo, valor, chave/URL dinamica e avisos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeAnalyzeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payment/qrcode/scheduled":{"post":{"tags":["payment"],"summary":"Agendar pagamento por QR Code","description":"Agenda pagamento de QR Code estatico. QR dinamico e bloqueado por seguranca.","operationId":"create_qrcode_scheduled_payment_qrcode_scheduled_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRCodeScheduledRequest"}}},"required":true},"responses":{"200":{"description":"Payment agendado para QR estatico; QR dinamico e recusado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"400":{"description":"invalid_qrcode_payload; qrcode_amount_required; qrcode_fixed_amount_mismatch; dynamic_qrcode_scheduling_not_supported; invalid_amount; invalid_date; payment_id_already_exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"examples":{"invalid_qrcode_payload":{"summary":"invalid_qrcode_payload","value":{"detail":"invalid_qrcode_payload"}},"qrcode_amount_required":{"summary":"qrcode_amount_required","value":{"detail":"qrcode_amount_required"}},"qrcode_fixed_amount_mismatch":{"summary":"qrcode_fixed_amount_mismatch","value":{"detail":"qrcode_fixed_amount_mismatch"}},"dynamic_qrcode_scheduling_not_supported":{"summary":"dynamic_qrcode_scheduling_not_supported","value":{"detail":"dynamic_qrcode_scheduling_not_supported"}},"invalid_amount":{"summary":"invalid_amount","value":{"detail":"invalid_amount"}},"invalid_date":{"summary":"invalid_date","value":{"detail":"invalid_date"}},"payment_id_already_exists":{"summary":"payment_id_already_exists","value":{"detail":"payment_id_already_exists"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payment/awaiting-balance":{"get":{"tags":["payment"],"summary":"Listar pagamentos aguardando saldo","operationId":"list_awaiting_balance_payment_awaiting_balance_get","responses":{"200":{"description":"Pagamentos com status AWAITING_BALANCE, do mais recente para o mais antigo.","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PaymentResponse"},"type":"array","title":"Response List Awaiting Balance Payment Awaiting Balance Get"}}}}}}},"/payment/{payment_id}/cancel":{"post":{"tags":["payment"],"summary":"Cancelar pagamento","description":"Cancela pagamento pendente/agendado localmente; se submetido, chama Asaas.","operationId":"cancel_payment_payment__payment_id__cancel_post","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","title":"Payment Id"}}],"responses":{"200":{"description":"Payment cancelado localmente ou no Asaas, conforme status atual.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"400":{"description":"cannot_cancel_status; asaas_cancel_failed","content":{"application/json":{"examples":{"cannot_cancel_status":{"summary":"cannot_cancel_status","value":{"detail":"cannot_cancel_status"}},"asaas_cancel_failed":{"summary":"asaas_cancel_failed","value":{"detail":"asaas_cancel_failed"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"not_found","content":{"application/json":{"examples":{"not_found":{"summary":"not_found","value":{"detail":"not_found"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payment/{payment_id}":{"get":{"tags":["payment"],"summary":"Consultar pagamento","operationId":"get_payment_payment__payment_id__get","parameters":[{"name":"payment_id","in":"path","required":true,"schema":{"type":"string","title":"Payment Id"}}],"responses":{"200":{"description":"Status e metadados do payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentResponse"}}}},"404":{"description":"not_found","content":{"application/json":{"examples":{"not_found":{"summary":"not_found","value":{"detail":"not_found"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pixkey":{"post":{"tags":["pixkey"],"summary":"Cadastrar e validar pixkey","description":"Valida a chave no DICT, compara documento esperado e salva para pagamentos futuros.","operationId":"create_pixkey_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePixKeyRequest"}}}},"responses":{"200":{"description":"Pixkey persistida com dados do titular retornados pelo DICT.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PixKeyResponse"}}}},"400":{"description":"asaas_api_key_not_set; external_id_required; external_id_already_exists; pix_key_already_registered; invalid_key_type; invalid_document_length; invalid_cpf_format; invalid_cnpj_format; invalid_email_format; invalid_phone_format_expected_+55DDDNNNNNNNNN; invalid_evp_format; holder_mismatch; dict_lookup_failed","content":{"application/json":{"examples":{"asaas_api_key_not_set":{"summary":"asaas_api_key_not_set","value":{"detail":"asaas_api_key_not_set"}},"external_id_required":{"summary":"external_id_required","value":{"detail":"external_id_required"}},"external_id_already_exists":{"summary":"external_id_already_exists","value":{"detail":"external_id_already_exists"}},"pix_key_already_registered":{"summary":"pix_key_already_registered","value":{"detail":"pix_key_already_registered"}},"invalid_key_type":{"summary":"invalid_key_type","value":{"detail":"invalid_key_type"}},"invalid_document_length":{"summary":"invalid_document_length","value":{"detail":"invalid_document_length"}},"invalid_cpf_format":{"summary":"invalid_cpf_format","value":{"detail":"invalid_cpf_format"}},"invalid_cnpj_format":{"summary":"invalid_cnpj_format","value":{"detail":"invalid_cnpj_format"}},"invalid_email_format":{"summary":"invalid_email_format","value":{"detail":"invalid_email_format"}},"invalid_phone_format_expected_+55DDDNNNNNNNNN":{"summary":"invalid_phone_format_expected_+55DDDNNNNNNNNN","value":{"detail":"invalid_phone_format_expected_+55DDDNNNNNNNNN"}},"invalid_evp_format":{"summary":"invalid_evp_format","value":{"detail":"invalid_evp_format"}},"holder_mismatch":{"summary":"holder_mismatch","value":{"detail":"holder_mismatch"}},"dict_lookup_failed":{"summary":"dict_lookup_failed","value":{"detail":"dict_lookup_failed"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["pixkey"],"summary":"Listar pixkeys","operationId":"list_keys_pixkey_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":200,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Lista paginada de chaves Pix cadastradas.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PixKeyResponse"},"title":"Response List Keys Pixkey Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pixkey/check/{key}":{"get":{"tags":["pixkey"],"summary":"Consultar pixkey sem salvar","description":"Consulta DB primeiro; se a chave nao existir localmente, faz lookup DICT no Asaas.","operationId":"check_key_pixkey_check__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Dados DICT encontrados no banco ou consultados no Asaas sem persistir.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PixKeyCheckResponse"}}}},"400":{"description":"asaas_api_key_not_set; dict_lookup_failed","content":{"application/json":{"examples":{"asaas_api_key_not_set":{"summary":"asaas_api_key_not_set","value":{"detail":"asaas_api_key_not_set"}},"dict_lookup_failed":{"summary":"dict_lookup_failed","value":{"detail":"dict_lookup_failed"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pixkey/{external_id}":{"get":{"tags":["pixkey"],"summary":"Buscar pixkey por external_id","operationId":"get_key_pixkey__external_id__get","parameters":[{"name":"external_id","in":"path","required":true,"schema":{"type":"string","title":"External Id"}}],"responses":{"200":{"description":"Pixkey cadastrada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PixKeyResponse"}}}},"404":{"description":"not_found","content":{"application/json":{"examples":{"not_found":{"summary":"not_found","value":{"detail":"not_found"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["pixkey"],"summary":"Remover pixkey","operationId":"delete_key_pixkey__external_id__delete","parameters":[{"name":"external_id","in":"path","required":true,"schema":{"type":"string","title":"External Id"}}],"responses":{"200":{"description":"Confirmacao de remocao.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"404":{"description":"not_found","content":{"application/json":{"examples":{"not_found":{"summary":"not_found","value":{"detail":"not_found"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/security-validator":{"post":{"tags":["asaas-inbound"],"summary":"Autorizar Mecanismo de Seguranca Asaas","description":"Aprova automaticamente solicitacoes do Mecanismo de Seguranca Asaas.","operationId":"security_validator_security_validator_post","parameters":[{"name":"asaas-access-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asaas-Access-Token"}}],"responses":{"200":{"description":"Resposta APPROVED quando o token enviado pelo Asaas confere.","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook/":{"post":{"tags":["asaas-inbound"],"summary":"Receber webhook Asaas","description":"Recebe eventos Asaas, persiste e notifica o sistema interno apenas com dados essenciais.","operationId":"receive_webhook_webhook__post","parameters":[{"name":"asaas-access-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asaas-Access-Token"}}],"responses":{"200":{"description":"Evento persistido e notificacao simplificada enviada ao internal_url.","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ConfigConfirmResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","description":"True se o webhook foi criado/recriado com sucesso"},"webhook_registered":{"additionalProperties":true,"type":"object","title":"Webhook Registered","description":"Objeto webhook retornado pelo Asaas"}},"type":"object","required":["ok","webhook_registered"],"title":"ConfigConfirmResponse","example":{"ok":true,"webhook_registered":{"enabled":true,"events":["TRANSFER_DONE","TRANSFER_FAILED"],"id":"8a3f2d1e-...","url":"https://asaas.v7m.net/webhook/"}}},"ConfigInternalResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","description":"True se o onboarding foi entregue e a URL salva"},"internal_url":{"type":"string","title":"Internal Url","description":"URL interna salva"},"onboarding_status":{"type":"integer","title":"Onboarding Status","description":"HTTP status code retornado pelo sistema interno"}},"type":"object","required":["ok","internal_url","onboarding_status"],"title":"ConfigInternalResponse","example":{"internal_url":"http://127.0.0.1:8081/","ok":true,"onboarding_status":200}},"ConfigStatusResponse":{"properties":{"configured":{"additionalProperties":true,"type":"object","title":"Configured","description":"Configuracoes salvas, com secrets mascarados"},"account":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Account","description":"Conta Asaas conectada"},"balance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Balance","description":"Saldo Asaas atual"},"webhook_registered":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Webhook Registered","description":"Webhook gerenciado encontrado no Asaas"},"errors":{"items":{"type":"string"},"type":"array","title":"Errors","description":"Pendencias de configuracao ou falhas de consulta. Lista vazia = tudo ok."}},"type":"object","required":["configured"],"title":"ConfigStatusResponse","example":{"account":{"email":"api@empresa.com","name":"Empresa Ltda"},"balance":{"balance":1234.56},"configured":{"asaas_api_key":"$aact_prod_***","asaas_security_token":"a1b2***","external_url":"https://asaas.v7m.net/","internal_url":"http://127.0.0.1:8081/"},"errors":[],"webhook_registered":{"enabled":true,"id":"8a3f2d1e-...","url":"https://asaas.v7m.net/webhook/"}}},"CreatePixKeyRequest":{"properties":{"external_id":{"type":"string","minLength":1,"title":"External Id","description":"ID unico do destinatario no sistema cliente"},"document":{"type":"string","title":"Document","description":"CPF com 11 digitos ou CNPJ com 14 digitos do titular esperado"},"key":{"type":"string","minLength":3,"title":"Key","description":"Chave Pix a validar no DICT"},"key_type":{"type":"string","title":"Key Type","description":"Tipo da chave: CPF, CNPJ, EMAIL, PHONE ou EVP"}},"type":"object","required":["external_id","document","key","key_type"],"title":"CreatePixKeyRequest","example":{"document":"07461638947","external_id":"diandra_celular","key":"+5542998171770","key_type":"PHONE"}},"ErrorResponse":{"properties":{"detail":{"type":"string","title":"Detail","description":"Codigo de erro ou mensagem. Para 400, um dos codigos documentados."}},"type":"object","required":["detail"],"title":"ErrorResponse","description":"Erro de dominio. Sempre um JSON com campo `detail` contendo um codigo curto.\n\nConsulte a lista completa em `ERROR_CODES` na descricao da API.","example":{"detail":"pixkey_not_found"}},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"OkResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"OkResponse","example":{"ok":true}},"PaymentResponse":{"properties":{"payment_id":{"type":"string","title":"Payment Id","description":"ID idempotente do pagamento (gerado ou fornecido pelo cliente)"},"kind":{"type":"string","title":"Kind","description":"\"pixkey\" | \"qrcode\""},"pixkey_external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pixkey External Id","description":"external_id da pixkey (kind=pixkey)"},"qrcode_payload":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qrcode Payload","description":"BR Code copia-e-cola (kind=qrcode)"},"amount":{"type":"number","title":"Amount","description":"Valor em BRL"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Descricao enviada ao Asaas"},"scheduled_for":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scheduled For","description":"Datetime ISO 8601 UTC do disparo agendado. Null para pagamentos imediatos."},"status":{"type":"string","title":"Status","description":"SCHEDULED → QUEUED → SUBMITTING → SUBMITTED → PAID | FAILED | CANCELLED | AWAITING_BALANCE"},"asaas_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asaas Id","description":"UUID da transferencia/transacao no Asaas"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error","description":"Ultimo erro registrado (ex: insufficient_balance)"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At","description":"Timestamp ISO 8601 de criacao"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At","description":"Timestamp ISO 8601 da ultima atualizacao"}},"type":"object","required":["payment_id","kind","amount","status"],"title":"PaymentResponse","description":"Pagamento Pix criado ou consultado.","example":{"amount":0.03,"asaas_id":"bc46e593-0a72-4495-a2f8-b4ad499791c0","created_at":"2026-04-24T17:35:24","description":"Pagamento salario abril/2026","kind":"pixkey","payment_id":"diandra_salario_202604","pixkey_external_id":"diandra_celular","status":"PAID","updated_at":"2026-04-24T17:35:36"}},"PixKeyCheckResponse":{"properties":{"source":{"type":"string","title":"Source","description":"\"db\" se ja cadastrada localmente, \"dict\" se consultada ao vivo no DICT"},"data":{"additionalProperties":true,"type":"object","title":"Data","description":"Dados do titular. Campos identicos a PixKeyResponse quando source=db."}},"type":"object","required":["source","data"],"title":"PixKeyCheckResponse","description":"Resultado de consulta de chave Pix (com ou sem persistencia).","example":{"data":{"bank_name":"SICOOB","holder_document":"074.***.**9-47","holder_name":"Diandra S.","key":"+5542998171770"},"source":"dict"}},"PixKeyResponse":{"properties":{"external_id":{"type":"string","title":"External Id","description":"ID do destinatario no sistema cliente"},"key":{"type":"string","title":"Key","description":"Chave Pix"},"key_type":{"type":"string","title":"Key Type","description":"CPF | CNPJ | EMAIL | PHONE | EVP"},"holder_document":{"type":"string","title":"Holder Document","description":"CPF (11 digitos) ou CNPJ (14 digitos) do titular"},"holder_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Holder Name","description":"Nome do titular retornado pelo DICT"},"bank_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bank Name","description":"Nome do banco do titular"},"validated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validated At","description":"Timestamp ISO 8601 da validacao DICT"}},"type":"object","required":["external_id","key","key_type","holder_document"],"title":"PixKeyResponse","description":"Chave Pix cadastrada e validada no DICT.","example":{"bank_name":"SICOOB","external_id":"diandra_celular","holder_document":"07461638947","holder_name":"Diandra S.","key":"+5542998171770","key_type":"PHONE","validated_at":"2026-04-24T17:30:00"}},"PixkeyImediateRequest":{"properties":{"pixkey_external_id":{"type":"string","title":"Pixkey External Id","description":"external_id da pixkey registrada"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount","description":"Valor em BRL"},"payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Id","description":"ID idempotente opcional fornecido pelo cliente"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Descricao enviada ao Asaas"}},"type":"object","required":["pixkey_external_id","amount"],"title":"PixkeyImediateRequest","example":{"amount":0.03,"description":"Pagamento salario abril/2026","payment_id":"diandra_salario_202604","pixkey_external_id":"diandra_celular"}},"PixkeyScheduledRequest":{"properties":{"date":{"type":"string","title":"Date","description":"YYYY-MM-DD"},"hour":{"anyOf":[{"type":"integer","maximum":23.0,"minimum":0.0},{"type":"null"}],"title":"Hour","description":"Hora local America/Sao_Paulo. Default 08."},"minute":{"anyOf":[{"type":"integer","maximum":59.0,"minimum":0.0},{"type":"null"}],"title":"Minute","description":"Minuto local America/Sao_Paulo. Default 00."},"pixkey_external_id":{"type":"string","title":"Pixkey External Id","description":"external_id da pixkey registrada"},"amount":{"type":"number","exclusiveMinimum":0.0,"title":"Amount","description":"Valor em BRL"},"payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Id","description":"ID idempotente opcional fornecido pelo cliente"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Descricao enviada ao Asaas"}},"type":"object","required":["date","pixkey_external_id","amount"],"title":"PixkeyScheduledRequest","example":{"amount":0.03,"date":"2026-04-24","hour":16,"minute":15,"payment_id":"diandra_agendado_20260424","pixkey_external_id":"diandra_celular"}},"QRCodeAnalyzeRequest":{"properties":{"qrcode_payload":{"type":"string","minLength":20,"title":"Qrcode Payload","description":"BR Code copia-e-cola"}},"type":"object","required":["qrcode_payload"],"title":"QRCodeAnalyzeRequest","example":{"qrcode_payload":"00020126360014br.gov.bcb.pix0114+554299938406952040000530398654040.025802BR..."}},"QRCodeAnalyzeResponse":{"properties":{"valid_tlv":{"type":"boolean","title":"Valid Tlv","description":"True se o payload foi parseado como TLV valido"},"kind":{"type":"string","title":"Kind","description":"\"static\" ou \"dynamic\""},"point_of_initiation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Point Of Initiation Method","description":"Tag 01: 11=estatico reutilizavel, 12=uso unico"},"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount","description":"Valor fixo (tag 54) ou null se variavel"},"allows_amount_edit":{"type":"boolean","title":"Allows Amount Edit","description":"True quando o QR nao tem valor fixo e aceita amount customizado"},"can_schedule":{"type":"boolean","title":"Can Schedule","description":"True para QR estatico; False para QR dinamico (nao pode agendar)"},"pix_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pix Key","description":"Chave Pix embutida (apenas QR estatico)"},"dynamic_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dynamic Url","description":"URL de payload dinamico (apenas QR dinamico)"},"merchant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant Name","description":"Nome do recebedor (tag 59)"},"merchant_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant City","description":"Cidade do recebedor (tag 60)"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference","description":"Referencia adicional (tag 62, subtag 05)"},"has_crc":{"type":"boolean","title":"Has Crc","description":"True se o CRC16 (tag 63) esta presente no payload"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings","description":"Avisos: amount_not_fixed, dynamic_qrcode_may_expire, etc."},"raw_fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Raw Fields","description":"Todos os campos TLV raiz extraidos (tag -> valor)"},"merchant_account_fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Merchant Account Fields","description":"Subtags da Merchant Account Information (tag 26)"},"additional_data_fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Additional Data Fields","description":"Subtags de Additional Data Field Template (tag 62)"}},"type":"object","required":["valid_tlv","kind","allows_amount_edit","can_schedule","has_crc"],"title":"QRCodeAnalyzeResponse","description":"Analise TLV de um BR Code PIX sem efetuar pagamento.","example":{"additional_data_fields":{},"allows_amount_edit":false,"amount":0.03,"can_schedule":true,"has_crc":true,"kind":"static","merchant_account_fields":{"00":"br.gov.bcb.pix","01":"+5542998171770"},"merchant_city":"GUARAPUAVA","merchant_name":"Diandra S","pix_key":"+5542998171770","point_of_initiation_method":"11","raw_fields":{"00":"01","01":"11","26":"...","52":"0000","53":"986","54":"0.03","58":"BR","59":"Diandra S","60":"GUARAPUAVA","63":"ABCD"},"valid_tlv":true,"warnings":[]}},"QRCodeImediateRequest":{"properties":{"qrcode_payload":{"type":"string","minLength":20,"title":"Qrcode Payload","description":"BR Code copia-e-cola"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Amount","description":"Valor em BRL. Obrigatorio qdo QR nao tem valor fixo; proibido se divergir."},"payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Id","description":"ID idempotente opcional fornecido pelo cliente"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Descricao enviada ao Asaas"}},"type":"object","required":["qrcode_payload"],"title":"QRCodeImediateRequest","example":{"description":"Pagamento via QR Code","qrcode_payload":"00020126360014br.gov.bcb.pix0114+554299938406952040000530398654040.025802BR..."}},"QRCodeScheduledRequest":{"properties":{"date":{"type":"string","title":"Date","description":"YYYY-MM-DD"},"hour":{"anyOf":[{"type":"integer","maximum":23.0,"minimum":0.0},{"type":"null"}],"title":"Hour","description":"Hora local America/Sao_Paulo. Default 08."},"minute":{"anyOf":[{"type":"integer","maximum":59.0,"minimum":0.0},{"type":"null"}],"title":"Minute","description":"Minuto local America/Sao_Paulo. Default 00."},"qrcode_payload":{"type":"string","minLength":20,"title":"Qrcode Payload","description":"BR Code copia-e-cola"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Amount","description":"Valor em BRL. Obrigatorio qdo QR nao tem valor fixo; proibido se divergir."},"payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Id","description":"ID idempotente opcional fornecido pelo cliente"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Descricao enviada ao Asaas"}},"type":"object","required":["date","qrcode_payload"],"title":"QRCodeScheduledRequest","example":{"date":"2026-04-24","hour":16,"minute":15,"qrcode_payload":"00020126360014br.gov.bcb.pix0114+554299938406952040000530398654040.025802BR..."}},"SetInternalUrlRequest":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url","description":"URL do sistema interno que recebera copias dos eventos Asaas e eventos sinteticos."}},"type":"object","required":["url"],"title":"SetInternalUrlRequest","example":{"url":"http://127.0.0.1:8081/"}},"SetKeyRequest":{"properties":{"api_key":{"type":"string","minLength":20,"title":"Api Key","description":"API key Asaas de producao ($aact_prod_*). Chaves sandbox sao rejeitadas."}},"type":"object","required":["api_key"],"title":"SetKeyRequest","example":{"api_key":"$aact_prod_xxxxxxxxxxxxxxxxxxxxx"}},"SetKeyResponse":{"properties":{"security_token":{"type":"string","title":"Security Token","description":"Token para colar no Mecanismo de Seguranca Asaas"},"security_validator_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Security Validator Url","description":"URL validadora para colar no Mecanismo de Seguranca Asaas"},"webhook_endpoint":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Webhook Endpoint","description":"URL que sera registrada como webhook Asaas em /config/key/confirm"},"events":{"items":{"type":"string"},"type":"array","title":"Events","description":"Eventos Asaas assinados pelo webhook gerenciado"},"account":{"additionalProperties":true,"type":"object","title":"Account","description":"Resumo da conta retornado por /v3/myAccount"},"instructions_html":{"type":"string","title":"Instructions Html","description":"Instrucoes HTML prontas para exibir ao operador"}},"type":"object","required":["security_token","security_validator_url","webhook_endpoint","events","account","instructions_html"],"title":"SetKeyResponse","example":{"account":{"email":"api@empresa.com","name":"Empresa Ltda"},"events":["TRANSFER_CREATED","TRANSFER_DONE","TRANSFER_FAILED","PIX_TRANSACTION_CREATED","PIX_TRANSACTION_COMPLETED","PIX_TRANSACTION_CANCELLED"],"instructions_html":"<ol>...</ol>","security_token":"a1b2c3d4e5f6...","security_validator_url":"https://asaas.v7m.net/security-validator","webhook_endpoint":"https://asaas.v7m.net/webhook/"}},"SetUrlRequest":{"properties":{"url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Url","description":"URL publica base do asaas-app. O webhook Asaas sera registrado em <url>/webhook/."}},"type":"object","required":["url"],"title":"SetUrlRequest","example":{"url":"https://asaas.v7m.net/"}},"SetUrlResponse":{"properties":{"verify_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Verify Url","description":"URL que deve ser acessada para confirmar o dominio"},"nonce":{"type":"string","title":"Nonce","description":"Token de uso unico embutido na verify_url"},"expires_in":{"type":"integer","title":"Expires In","description":"TTL do nonce em segundos"}},"type":"object","required":["verify_url","nonce","expires_in"],"title":"SetUrlResponse","example":{"expires_in":300,"nonce":"abc123xyz","verify_url":"https://asaas.v7m.net/config/url/verify/abc123xyz"}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"tags":[{"name":"config","description":"Onboarding do app: URL publica, URL interna, API key Asaas e registro do webhook oficial."},{"name":"pixkey","description":"Cadastro e validacao DICT de destinatarios Pix antes de permitir pagamentos."},{"name":"payment","description":"Pagamentos Pix por chave cadastrada ou QR Code, com fila, agendamento, cancelamento e conciliacao."},{"name":"asaas-inbound","description":"Endpoints chamados pelo Asaas. Exigem header asaas-access-token."}]}