{"openapi":"3.1.0","info":{"title":"API MinePag v1","version":"1.0.0","description":"API REST da loja: catálogo, carrinho e checkout headless, pedidos, reembolsos, clientes, entregas, assinaturas e webhooks. Valores em centavos de real, datas em ISO 8601 e respostas no envelope `{ data, meta }`."},"servers":[{"url":"https://minepag.com.br/api/v1","description":"Produção"}],"tags":[{"name":"Diagnóstico","description":"Confira a chave de API e a loja a que ela pertence."},{"name":"Catálogo","description":"Produtos e categorias à venda. Funciona com a chave publicável."},{"name":"Carrinho","description":"Monte o carrinho de uma loja headless. Toda chamada depois da criação exige o `X-Cart-Token`."},{"name":"Checkout","description":"Formas de pagamento da loja, fechamento do pedido e nova tentativa de pagamento."},{"name":"Avisos de estoque","description":"Inscreva compradores para receber um e-mail quando o produto voltar."},{"name":"Pedidos","description":"Consulte e cancele pedidos. Exige chave secreta."},{"name":"Reembolsos","description":"Reembolsos totais e parciais de pagamentos. Exige chave secreta."},{"name":"Clientes","description":"Cadastro de clientes da loja. Exige chave secreta."},{"name":"Entregas","description":"Acompanhe e reenvie entregas e confirme as de serviços externos. Exige chave secreta."},{"name":"Acessos liberados","description":"Benefícios concedidos aos clientes. Exige chave secreta."},{"name":"Assinaturas","description":"Consulte e cancele assinaturas. Exige chave secreta."},{"name":"Webhooks","description":"Cadastre e gerencie os endpoints que recebem os eventos da loja. Exige chave secreta."}],"security":[{"chaveSecreta":[]}],"paths":{"/me":{"get":{"operationId":"api.me","tags":["Diagnóstico"],"summary":"Consultar a chave de API","description":"Diagnóstico da chave: loja, tipo e escopos. Útil para conferir a integração.\n\n**Chave:** Chave publicável ou secreta.","responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"project":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false},"apiKey":{"type":"object","properties":{"prefix":{"type":"string"},"kind":{"type":"string","enum":["publishable","secret"]},"scopes":{"type":"array","items":{"type":"string","enum":["catalog:read","checkout:write","orders:read","orders:write","customers:read","customers:write","subscriptions:read","subscriptions:write","deliveries:read","deliveries:write","webhooks:read","webhooks:write"]}}},"required":["prefix","kind","scopes"],"additionalProperties":false}},"required":["project","apiKey"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/categories":{"get":{"operationId":"api.categories.list","tags":["Catálogo"],"summary":"Listar categorias","description":"Categorias ativas da loja, na ordem definida no painel, com a quantidade de produtos à venda.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `catalog:read`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"parentId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"name":{"type":"string"},"slug":{"type":"string"},"description":{"type":["string","null"]},"productCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","parentId","name","slug","description","productCount"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/products":{"get":{"operationId":"api.products.list","tags":["Catálogo"],"summary":"Listar produtos","description":"Produtos listados e à venda, na ordem definida pelo lojista.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `catalog:read`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":24,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":40}},{"name":"category","in":"query","required":false,"description":"Slug da categoria.","schema":{"type":"string","maxLength":120}},{"name":"q","in":"query","required":false,"description":"Busca pelo nome do produto.","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"},"summary":{"type":["string","null"]},"type":{"type":"string","enum":["digital","service","subscription","physical","donation","minecraft_item"]},"imageUrl":{"type":["string","null"]},"imageAlt":{"type":"string"},"price":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":["string","null"]},"type":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço final, já com promoção de catálogo em centavos."},"originalAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço sem promoção em centavos."},"compareAtAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Preço \"de\" (riscado) em centavos."},"discountPercent":{"type":["number","null"]},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"headline":{"type":["string","null"]}},"required":["id","name","headline"],"additionalProperties":false},{"type":"null"}]},"minimumAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Valor mínimo em centavos, para preços \"pague quanto quiser\"."},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"trialDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isDefault":{"type":"boolean"},"sku":{"type":["string","null"]},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Unidades disponíveis; `null` quando o estoque não é controlado."},"stock":{"type":"string","enum":["available","low","unavailable","untracked"]}},"required":["id","name","type","amount","originalAmount","compareAtAmount","discountPercent","offer","minimumAmount","interval","intervalCount","trialDays","isDefault","sku","available","stock"],"additionalProperties":false,"description":"Preço padrão ou, sem padrão, o menor preço ativo."},"priceCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"soldOut":{"type":"boolean"}},"required":["id","slug","name","summary","type","imageUrl","imageAlt","price","priceCount","soldOut"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/products/{productId}":{"get":{"operationId":"api.products.get","tags":["Catálogo"],"summary":"Consultar produto","description":"Aceita o id ou o slug do produto. Traz preços, imagens, campos de checkout, benefícios e ofertas relacionadas.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `catalog:read`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"productId","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":160,"description":"Id (UUID) ou slug do produto."}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"},"summary":{"type":["string","null"]},"description":{"type":["string","null"]},"type":{"type":"string","enum":["digital","service","subscription","physical","donation","minecraft_item"]},"seoTitle":{"type":["string","null"]},"seoDescription":{"type":["string","null"]},"maxQuantityPerOrder":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"prices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":["string","null"]},"type":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço final, já com promoção de catálogo em centavos."},"originalAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço sem promoção em centavos."},"compareAtAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Preço \"de\" (riscado) em centavos."},"discountPercent":{"type":["number","null"]},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"headline":{"type":["string","null"]}},"required":["id","name","headline"],"additionalProperties":false},{"type":"null"}]},"minimumAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Valor mínimo em centavos, para preços \"pague quanto quiser\"."},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"trialDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"isDefault":{"type":"boolean"},"sku":{"type":["string","null"]},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Unidades disponíveis; `null` quando o estoque não é controlado."},"stock":{"type":"string","enum":["available","low","unavailable","untracked"]},"attributes":{"type":"array","items":{"type":"object","properties":{"option":{"type":"string"},"value":{"type":"string"}},"required":["option","value"],"additionalProperties":false}}},"required":["id","name","type","amount","originalAmount","compareAtAmount","discountPercent","offer","minimumAmount","interval","intervalCount","trialDays","isDefault","sku","available","stock","attributes"],"additionalProperties":false}},"images":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"url":{"type":["string","null"]},"alt":{"type":"string"},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"priceId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["id","type","url","alt","width","height","priceId"],"additionalProperties":false}},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"priceId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"placeholder":{"type":["string","null"]},"minLength":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxLength":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minValue":{"type":["number","null"]},"maxValue":{"type":["number","null"]}},"required":["key","label","type","required","choices","helpText","priceId","placeholder","minLength","maxLength","minValue","maxValue"],"additionalProperties":false}},"benefits":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["download","content_access","discord_role","telegram_access","minecraft_command","license_key","external_webhook","service","custom"]},"typeLabel":{"type":"string"},"name":{"type":"string"},"description":{"type":["string","null"]},"priceId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["id","type","typeLabel","name","description","priceId"],"additionalProperties":false}},"relatedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","enum":["catalog_sale","upsell","cross_sell","bundle","order_bump"]},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"products":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"],"additionalProperties":false}}},"required":["id","type","name","headline","description","ctaLabel","products"],"additionalProperties":false}}},"required":["id","slug","name","summary","description","type","seoTitle","seoDescription","maxQuantityPerOrder","prices","images","checkoutFields","benefits","relatedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/carts":{"post":{"operationId":"api.carts.create","tags":["Carrinho"],"summary":"Criar carrinho","description":"Cria um carrinho (opcionalmente já com itens). A resposta traz o `X-Cart-Token`, exigido em todas as operações seguintes do carrinho e no checkout.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"},"items":{"default":[],"maxItems":50,"type":"array","items":{"type":"object","properties":{"priceId":{"type":"string","format":"uuid"},"quantity":{"default":1,"type":"integer","minimum":1,"maximum":999},"customUnitAmount":{"description":"Valor escolhido pelo comprador em preços \"pague quanto quiser\", em centavos.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checkoutFields":{"description":"Respostas dos campos de checkout do produto, por chave.","type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":2000}}},"required":["priceId"]}},"context":{"type":"object","properties":{"utmSource":{"type":"string","maxLength":120},"utmMedium":{"type":"string","maxLength":120},"utmCampaign":{"type":"string","maxLength":120},"referrer":{"type":"string","maxLength":500}}}}}}}},"responses":{"201":{"description":"Criado.","headers":{"X-Cart-Token":{"description":"Token assinado do carrinho, exigido nas próximas chamadas.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}},"token":{"type":"string","description":"O mesmo valor do cabeçalho `X-Cart-Token`."}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers","token"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`out_of_stock`: Não há estoque suficiente para um dos itens do carrinho.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos. `product_unavailable`: Um dos produtos não está mais disponível para compra.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/carts/{cartId}":{"get":{"operationId":"api.carts.get","tags":["Carrinho"],"summary":"Consultar carrinho","description":"Devolve o carrinho com os itens, o cupom, os totais recalculados e as pendências que impedem o checkout.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"cartId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]},"patch":{"operationId":"api.carts.update","tags":["Carrinho"],"summary":"Informar o e-mail do carrinho","description":"Atualiza o e-mail do carrinho (usado na recuperação de carrinho abandonado).\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"cartId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"}},"required":["email"]}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/carts/{cartId}/items":{"post":{"operationId":"api.carts.items.add","tags":["Carrinho"],"summary":"Adicionar item ao carrinho","description":"Adiciona um preço ao carrinho; se ele já estiver lá, soma a quantidade.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"cartId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"priceId":{"type":"string","format":"uuid"},"quantity":{"default":1,"type":"integer","minimum":1,"maximum":999},"customUnitAmount":{"description":"Valor escolhido pelo comprador em preços \"pague quanto quiser\", em centavos.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checkoutFields":{"description":"Respostas dos campos de checkout do produto, por chave.","type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":2000}}},"required":["priceId"]}}}},"responses":{"201":{"description":"Criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`out_of_stock`: Não há estoque suficiente para um dos itens do carrinho.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos. `product_unavailable`: Um dos produtos não está mais disponível para compra.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/carts/{cartId}/items/{itemId}":{"patch":{"operationId":"api.carts.items.update","tags":["Carrinho"],"summary":"Alterar item do carrinho","description":"Altera a quantidade, o valor escolhido (em preços \"pague quanto quiser\") ou as respostas dos campos de checkout do item.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"cartId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"itemId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quantity":{"type":"integer","minimum":1,"maximum":999},"customUnitAmount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"checkoutFields":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":2000}}}}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo. `not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`out_of_stock`: Não há estoque suficiente para um dos itens do carrinho.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]},"delete":{"operationId":"api.carts.items.remove","tags":["Carrinho"],"summary":"Remover item do carrinho","description":"Tira o item do carrinho e recalcula os totais.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"cartId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"itemId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo. `not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/carts/{cartId}/coupon":{"put":{"operationId":"api.carts.coupon.apply","tags":["Carrinho"],"summary":"Aplicar cupom","description":"Aplica o cupom ao carrinho e devolve os totais já com o desconto.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 20 requisições a cada 10 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"cartId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":64}},"required":["code"]}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos. `coupon_invalid`: Cupom inválido, expirado ou esgotado. `coupon_not_applicable`: Este cupom não vale para os itens do carrinho.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]},"delete":{"operationId":"api.carts.coupon.remove","tags":["Carrinho"],"summary":"Remover cupom","description":"Tira o cupom do carrinho e recalcula os totais.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"cartId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["active","converted","abandoned","expired"]},"email":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"currency":{"type":"string","const":"BRL"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"productSlug":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"priceType":{"type":"string","enum":["one_time","recurring","pay_what_you_want"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"imageUrl":{"type":["string","null"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"listUnitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário de tabela em centavos."},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário cobrado em centavos."},"offer":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"},"unitDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","type","unitDiscount"],"additionalProperties":false},{"type":"null"}]},"offerDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de oferta em centavos."},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto de cupom em centavos."},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Subtotal do item em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"available":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["text","textarea","email","phone","number","url","date","checkbox","select","multiselect","minecraft_nickname","discord_username","document"]},"required":{"type":"boolean"},"choices":{"anyOf":[{"type":"array","items":{}},{"type":"null"}]},"helpText":{"type":["string","null"]},"value":{"type":["string","null"]}},"required":["key","label","type","required","choices","helpText","value"],"additionalProperties":false}}},"required":["id","productId","productName","productSlug","priceId","priceName","priceType","interval","intervalCount","imageUrl","quantity","listUnitAmount","unitAmount","offer","offerDiscount","couponDiscount","subtotal","total","available","checkoutFields"],"additionalProperties":false}},"coupon":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"applied":{"type":"boolean"},"discount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":["string","null"]}},"required":["code","applied","discount","message"],"additionalProperties":false},{"type":"null"}]},"totals":{"type":"object","properties":{"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offerDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"couponDiscount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"trialDiscountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor que não é cobrado agora porque a assinatura começa com teste grátis. Já está em `discountTotal`."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["subtotal","offerDiscountTotal","couponDiscount","trialDiscountTotal","discountTotal","total"],"additionalProperties":false},"issues":{"type":"array","items":{"type":"object","properties":{"lineId":{"type":"string","format":"uuid"},"code":{"type":"string","enum":["product_unavailable","out_of_stock","checkout_fields"]},"message":{"type":"string"}},"required":["lineId","code","message"],"additionalProperties":false},"description":"Pendências que impedem o checkout. Resolva antes de chamar `POST /checkout`."},"suggestedOffers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"name":{"type":"string"},"headline":{"type":["string","null"]},"description":{"type":["string","null"]},"ctaLabel":{"type":["string","null"]},"rewards":{"type":"array","items":{}}},"required":["id","type","name","headline","description","ctaLabel","rewards"],"additionalProperties":false}}},"required":["id","status","email","expiresAt","currency","items","coupon","totals","issues","suggestedOffers"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/coupons/validate":{"post":{"operationId":"api.coupons.validate","tags":["Carrinho"],"summary":"Validar cupom","description":"Confere se um cupom existe e está dentro da validade e do limite de usos. O desconto real depende do carrinho: aplique o cupom em `PUT /carts/{id}/coupon` para ver o valor.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 20 requisições a cada 10 min, além do limite geral de 600 por minuto por chave.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":64}},"required":["code"]}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"code":{"type":"string"},"discountType":{"type":"string","enum":["percentage","fixed"]},"discountValue":{"type":"number","description":"Percentual ou valor em centavos, conforme `discountType`."},"maxDiscountAmount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"minSubtotal":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["code","discountType","discountValue","maxDiscountAmount","minSubtotal","expiresAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos. `coupon_invalid`: Cupom inválido, expirado ou esgotado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/payment-methods":{"get":{"operationId":"api.payment_methods.list","tags":["Checkout"],"summary":"Listar formas de pagamento","description":"Formas de pagamento que a loja aceita agora, na ordem Pix → cartão → boleto, com o gateway de cada uma e a configuração pública para tokenizar o cartão no navegador (Public Key, payee code ou chave publicável). Nunca traz credenciais secretas.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 120 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"method":{"type":"string","enum":["pix","boleto","card","nupay"]},"provider":{"type":"string","enum":["abacatepay","asaas","efi","infinitepay","inter","mercadopago","nupay","pagarme","pagseguro","paghiper","picpay","stripe","woovi"]},"environment":{"type":"string","enum":["sandbox","production"]},"publicConfig":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Valores públicos para tokenizar o cartão no navegador: `publicKey` (Mercado Pago e PagBank), `payeeCode` (Efí) ou `publishableKey` (Stripe)."}},"required":["method","provider","environment","publicConfig"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/checkout":{"post":{"operationId":"api.checkout.create","tags":["Checkout"],"summary":"Fechar pedido e cobrar","description":"Fecha o carrinho em pedido e cria a cobrança no gateway da forma de pagamento escolhida. Exige o `X-Cart-Token` e um `Idempotency-Key`: repetir a chamada com a mesma chave devolve o mesmo pedido. Cartão: envie o token gerado no navegador pelo SDK do gateway (`payment.card`), nunca o número do cartão. Pagamento recusado responde `402 payment_declined` com o pedido em `error.details`, para pagar de novo em `POST /orders/{orderId}/payments`. Gateway fora do ar responde `502 payment_provider_unavailable`: o carrinho já virou pedido e `error.details` traz o pedido, o `accessToken` e o `orderUrl`. Repetir o checkout com a mesma `Idempotency-Key` e o mesmo corpo devolve esse pedido e tenta a cobrança de novo; para trocar a forma de pagamento, use `POST /orders/{orderId}/payments`. `termsAcceptedAt` é o momento em que o comprador aceitou os termos da loja, nas últimas 24 horas: ele vai para o pedido junto com os termos e a política de reembolso vigentes e entra no dossiê de contestação. Com a chave secreta, a chamada sai do servidor da loja: envie o IP e o navegador do comprador em `buyer.ip` e `buyer.userAgent`, senão o pedido fica sem eles.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Idempotência:** exige o cabeçalho `Idempotency-Key`.\n\n**Limite:** 20 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"X-Cart-Token","in":"header","required":true,"description":"Token devolvido na criação do carrinho.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"description":"De 1 a 255 caracteres visíveis. Repetir a chamada com a mesma chave devolve a mesma resposta por 24 horas.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cartId":{"type":"string","format":"uuid"},"buyer":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"email":{"type":"string","maxLength":254,"format":"email"},"phone":{"type":"string","pattern":"^\\+?\\d{10,15}$","description":"Só números, com DDD."},"document":{"description":"CPF ou CNPJ. Obrigatório para boleto e cartão.","type":"string","maxLength":20}},"required":["name","email"]},"payment":{"type":"object","properties":{"method":{"type":"string","enum":["pix","boleto","card","nupay"]},"installments":{"default":1,"type":"integer","minimum":1,"maximum":12},"card":{"description":"Token gerado no navegador pelo SDK do gateway. Nunca envie o número do cartão.","oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["asaas","infinitepay"]},"hosted":{"type":"boolean","const":true}},"required":["provider","hosted"]},{"type":"object","properties":{"provider":{"type":"string","const":"abacatepay"},"token":{"type":"string","pattern":"^ctok_[A-Za-z0-9]{1,100}$"}},"required":["provider","token"]},{"type":"object","properties":{"provider":{"type":"string","const":"efi"},"paymentToken":{"type":"string","minLength":1,"maxLength":500}},"required":["provider","paymentToken"]},{"type":"object","properties":{"provider":{"type":"string","const":"mercadopago"},"token":{"type":"string","minLength":1,"maxLength":500},"paymentMethodId":{"type":"string","minLength":1,"maxLength":50},"cardType":{"type":"string","enum":["credit_card","debit_card"]},"issuerId":{"type":"string","maxLength":50}},"required":["provider","token","paymentMethodId","cardType"]},{"type":"object","properties":{"provider":{"type":"string","const":"pagseguro"},"encryptedCard":{"type":"string","minLength":1,"maxLength":5000},"holderName":{"type":"string","minLength":1,"maxLength":120}},"required":["provider","encryptedCard","holderName"]},{"type":"object","properties":{"provider":{"type":"string","const":"pagarme"},"cardToken":{"type":"string","pattern":"^token_[A-Za-z0-9]{1,64}$"}},"required":["provider","cardToken"]},{"type":"object","properties":{"provider":{"type":"string","const":"stripe"},"confirmationTokenId":{"type":"string","pattern":"^ctoken_[A-Za-z0-9]+$"}},"required":["provider","confirmationTokenId"]}]},"billingAddress":{"type":"object","properties":{"street":{"type":"string","minLength":1,"maxLength":160},"number":{"type":"string","minLength":1,"maxLength":20},"complement":{"type":"string","maxLength":80},"district":{"type":"string","minLength":1,"maxLength":80},"city":{"type":"string","minLength":1,"maxLength":80},"state":{"type":"string","pattern":"^[A-Z]{2}$"},"postalCode":{"type":"string","pattern":"^\\d{8}$"},"country":{"type":"string","const":"BR"}},"required":["street","number","district","city","state","postalCode","country"]}},"required":["method"]},"marketingConsent":{"default":false,"type":"boolean"},"checkoutFields":{"description":"Respostas dos campos de checkout por item do carrinho.","type":"object","propertyNames":{"type":"string","format":"uuid"},"additionalProperties":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":2000}}}},"required":["cartId","buyer","payment"]}}}},"responses":{"200":{"description":"Repetição com a mesma `Idempotency-Key`: devolve o pedido já criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"order":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["pending","paid","completed","cancelled","expired","refunded"]},"paymentStatus":{"type":"string","enum":["pending","paid","partially_refunded","refunded","failed","cancelled","chargeback"]},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","number","status","paymentStatus","subtotal","discountTotal","total","expiresAt"],"additionalProperties":false},"payment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"method":{"type":"string","enum":["pix","boleto","card","nupay"]},"status":{"type":"string","enum":["pending","authorized","confirmed","overdue","partially_refunded","refunded","failed","cancelled","chargeback"]},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"pix"},"copyPaste":{"type":"string"},"qrCodeImage":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["method","copyPaste","qrCodeImage","expiresAt"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"boleto"},"barcode":{"type":"string"},"digitableLine":{"type":["string","null"]},"pdfUrl":{"type":["string","null"]},"pixCopyPaste":{"type":["string","null"]},"dueDate":{"type":"string","format":"date"}},"required":["method","barcode","digitableLine","pdfUrl","pixCopyPaste","dueDate"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"card"},"brand":{"type":["string","null"]},"last4":{"type":["string","null"]},"installments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["method","brand","last4","installments"],"additionalProperties":false}]},{"type":"null"}]},"clientAction":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"redirect"},"url":{"type":"string"}},"required":["kind","url"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"stripe_confirm"},"clientSecret":{"type":"string"}},"required":["kind","clientSecret"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"none"}},"required":["kind"],"additionalProperties":false}]},"failureReason":{"type":["string","null"]}},"required":["id","method","status","amount","instructions","clientAction","failureReason"],"additionalProperties":false},{"type":"null"}]},"accessToken":{"type":"string","description":"Token do pedido: serve para acompanhar o pedido e para pagar de novo, no cabeçalho `X-Order-Token`."},"orderUrl":{"type":"string","description":"Página do pedido na vitrine."}},"required":["order","payment","accessToken","orderUrl"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"201":{"description":"Criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"order":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["pending","paid","completed","cancelled","expired","refunded"]},"paymentStatus":{"type":"string","enum":["pending","paid","partially_refunded","refunded","failed","cancelled","chargeback"]},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","number","status","paymentStatus","subtotal","discountTotal","total","expiresAt"],"additionalProperties":false},"payment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"method":{"type":"string","enum":["pix","boleto","card","nupay"]},"status":{"type":"string","enum":["pending","authorized","confirmed","overdue","partially_refunded","refunded","failed","cancelled","chargeback"]},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"pix"},"copyPaste":{"type":"string"},"qrCodeImage":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["method","copyPaste","qrCodeImage","expiresAt"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"boleto"},"barcode":{"type":"string"},"digitableLine":{"type":["string","null"]},"pdfUrl":{"type":["string","null"]},"pixCopyPaste":{"type":["string","null"]},"dueDate":{"type":"string","format":"date"}},"required":["method","barcode","digitableLine","pdfUrl","pixCopyPaste","dueDate"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"card"},"brand":{"type":["string","null"]},"last4":{"type":["string","null"]},"installments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["method","brand","last4","installments"],"additionalProperties":false}]},{"type":"null"}]},"clientAction":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"redirect"},"url":{"type":"string"}},"required":["kind","url"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"stripe_confirm"},"clientSecret":{"type":"string"}},"required":["kind","clientSecret"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"none"}},"required":["kind"],"additionalProperties":false}]},"failureReason":{"type":["string","null"]}},"required":["id","method","status","amount","instructions","clientAction","failureReason"],"additionalProperties":false},{"type":"null"}]},"accessToken":{"type":"string","description":"Token do pedido: serve para acompanhar o pedido e para pagar de novo, no cabeçalho `X-Order-Token`."},"orderUrl":{"type":"string","description":"Página do pedido na vitrine."}},"required":["order","payment","accessToken","orderUrl"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"402":{"description":"`payment_declined`: O pagamento foi recusado. Confira os dados ou use outra forma de pagamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação. `checkout_blocked`: Não foi possível concluir a compra. Se o problema continuar, fale com a loja. `checkout_paused`: O checkout desta loja está temporariamente pausado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`cart_not_found`: Carrinho não encontrado ou expirado. Monte o carrinho de novo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente. `cart_already_checked_out`: Este carrinho já virou um pedido. Consulte o pedido gerado. `out_of_stock`: Não há estoque suficiente para um dos itens do carrinho.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos. `cart_empty`: O carrinho está vazio. `product_unavailable`: Um dos produtos não está mais disponível para compra. `coupon_invalid`: Cupom inválido, expirado ou esgotado. `payment_method_unavailable`: Esta forma de pagamento não está disponível nesta loja.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"502":{"description":"`payment_provider_unavailable`: O gateway de pagamento não respondeu. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/orders/{orderId}/payments":{"post":{"operationId":"api.orders.payments.create","tags":["Checkout"],"summary":"Pagar de novo um pedido pendente","description":"Nova tentativa de pagamento de um pedido pendente cujo último pagamento foi recusado, expirou, foi cancelado ou ficou sem cobrança porque o gateway não respondeu (`502 payment_provider_unavailable`), por exemplo para trocar um cartão recusado por Pix. Exige o `X-Order-Token` (o `accessToken` devolvido pelo checkout). Cada tentativa cria um novo pagamento no mesmo pedido; a exceção é a cobrança que o gateway não chegou a criar: com a mesma forma de pagamento, ela é refeita no mesmo pagamento, sem risco de cobrar duas vezes. Outra recusa responde `402 payment_declined`.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Idempotência:** aceita o cabeçalho `Idempotency-Key`.\n\n**Limite:** 20 requisições a cada 1 min, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"orderId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"X-Order-Token","in":"header","required":true,"description":"O `accessToken` devolvido pelo checkout.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"De 1 a 255 caracteres visíveis. Repetir a chamada com a mesma chave devolve a mesma resposta por 24 horas.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"buyer":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":120},"email":{"type":"string","maxLength":254,"format":"email"},"phone":{"type":"string","pattern":"^\\+?\\d{10,15}$","description":"Só números, com DDD."},"document":{"description":"CPF ou CNPJ. Obrigatório para boleto e cartão.","type":"string","maxLength":20}},"required":["name","email"]},"payment":{"type":"object","properties":{"method":{"type":"string","enum":["pix","boleto","card","nupay"]},"installments":{"default":1,"type":"integer","minimum":1,"maximum":12},"card":{"description":"Token gerado no navegador pelo SDK do gateway. Nunca envie o número do cartão.","oneOf":[{"type":"object","properties":{"provider":{"type":"string","enum":["asaas","infinitepay"]},"hosted":{"type":"boolean","const":true}},"required":["provider","hosted"]},{"type":"object","properties":{"provider":{"type":"string","const":"abacatepay"},"token":{"type":"string","pattern":"^ctok_[A-Za-z0-9]{1,100}$"}},"required":["provider","token"]},{"type":"object","properties":{"provider":{"type":"string","const":"efi"},"paymentToken":{"type":"string","minLength":1,"maxLength":500}},"required":["provider","paymentToken"]},{"type":"object","properties":{"provider":{"type":"string","const":"mercadopago"},"token":{"type":"string","minLength":1,"maxLength":500},"paymentMethodId":{"type":"string","minLength":1,"maxLength":50},"cardType":{"type":"string","enum":["credit_card","debit_card"]},"issuerId":{"type":"string","maxLength":50}},"required":["provider","token","paymentMethodId","cardType"]},{"type":"object","properties":{"provider":{"type":"string","const":"pagseguro"},"encryptedCard":{"type":"string","minLength":1,"maxLength":5000},"holderName":{"type":"string","minLength":1,"maxLength":120}},"required":["provider","encryptedCard","holderName"]},{"type":"object","properties":{"provider":{"type":"string","const":"pagarme"},"cardToken":{"type":"string","pattern":"^token_[A-Za-z0-9]{1,64}$"}},"required":["provider","cardToken"]},{"type":"object","properties":{"provider":{"type":"string","const":"stripe"},"confirmationTokenId":{"type":"string","pattern":"^ctoken_[A-Za-z0-9]+$"}},"required":["provider","confirmationTokenId"]}]},"billingAddress":{"type":"object","properties":{"street":{"type":"string","minLength":1,"maxLength":160},"number":{"type":"string","minLength":1,"maxLength":20},"complement":{"type":"string","maxLength":80},"district":{"type":"string","minLength":1,"maxLength":80},"city":{"type":"string","minLength":1,"maxLength":80},"state":{"type":"string","pattern":"^[A-Z]{2}$"},"postalCode":{"type":"string","pattern":"^\\d{8}$"},"country":{"type":"string","const":"BR"}},"required":["street","number","district","city","state","postalCode","country"]}},"required":["method"]}},"required":["buyer","payment"]}}}},"responses":{"201":{"description":"Criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"order":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["pending","paid","completed","cancelled","expired","refunded"]},"paymentStatus":{"type":"string","enum":["pending","paid","partially_refunded","refunded","failed","cancelled","chargeback"]},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","number","status","paymentStatus","subtotal","discountTotal","total","expiresAt"],"additionalProperties":false},"payment":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"method":{"type":"string","enum":["pix","boleto","card","nupay"]},"status":{"type":"string","enum":["pending","authorized","confirmed","overdue","partially_refunded","refunded","failed","cancelled","chargeback"]},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"pix"},"copyPaste":{"type":"string"},"qrCodeImage":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["method","copyPaste","qrCodeImage","expiresAt"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"boleto"},"barcode":{"type":"string"},"digitableLine":{"type":["string","null"]},"pdfUrl":{"type":["string","null"]},"pixCopyPaste":{"type":["string","null"]},"dueDate":{"type":"string","format":"date"}},"required":["method","barcode","digitableLine","pdfUrl","pixCopyPaste","dueDate"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"card"},"brand":{"type":["string","null"]},"last4":{"type":["string","null"]},"installments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["method","brand","last4","installments"],"additionalProperties":false}]},{"type":"null"}]},"clientAction":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"redirect"},"url":{"type":"string"}},"required":["kind","url"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"stripe_confirm"},"clientSecret":{"type":"string"}},"required":["kind","clientSecret"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"none"}},"required":["kind"],"additionalProperties":false}]},"failureReason":{"type":["string","null"]}},"required":["id","method","status","amount","instructions","clientAction","failureReason"],"additionalProperties":false},{"type":"null"}]},"accessToken":{"type":"string","description":"Token do pedido: serve para acompanhar o pedido e para pagar de novo, no cabeçalho `X-Order-Token`."},"orderUrl":{"type":"string","description":"Página do pedido na vitrine."}},"required":["order","payment","accessToken","orderUrl"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"402":{"description":"`payment_declined`: O pagamento foi recusado. Confira os dados ou use outra forma de pagamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação. `checkout_paused`: O checkout desta loja está temporariamente pausado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente. `order_not_payable`: Este pedido não aceita mais pagamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos. `payment_method_unavailable`: Esta forma de pagamento não está disponível nesta loja.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"502":{"description":"`payment_provider_unavailable`: O gateway de pagamento não respondeu. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/stock-alerts":{"post":{"operationId":"api.stock_alerts.create","tags":["Avisos de estoque"],"summary":"Pedir aviso de volta ao estoque","description":"Inscreve um e-mail para ser avisado quando o preço voltar ao estoque.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 10 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"priceId":{"type":"string","format":"uuid"},"email":{"type":"string","maxLength":254,"format":"email"}},"required":["priceId","email"]}}}},"responses":{"201":{"description":"Criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"subscribed":{"type":"boolean"},"created":{"type":"boolean"}},"required":["subscribed","created"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/stock-alerts/cancel":{"post":{"operationId":"api.stock_alerts.cancel","tags":["Avisos de estoque"],"summary":"Cancelar aviso de estoque","description":"Cancela o aviso pelo token do link enviado no e-mail.\n\n**Chave:** Chave publicável ou secreta.\n\n**Escopo:** `checkout:write`.\n\n**Limite:** 10 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":16,"maxLength":200,"description":"Token do link enviado no e-mail."}},"required":["token"]}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"cancelled":{"type":"boolean"}},"required":["cancelled"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chavePublicavel":[]},{"chaveSecreta":[]}]}},"/orders":{"get":{"operationId":"api.orders.list","tags":["Pedidos"],"summary":"Listar pedidos","description":"Pedidos da loja, do mais recente para o mais antigo, com filtros por status, forma de pagamento, cliente e período.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `orders:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"Itens por página (1 a 100).","schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","paid","completed","cancelled","expired","refunded"]}},{"name":"paymentStatus","in":"query","required":false,"schema":{"type":"string","enum":["pending","paid","partially_refunded","refunded","failed","cancelled","chargeback"]}},{"name":"method","in":"query","required":false,"schema":{"type":"string","enum":["pix","boleto","card","nupay"]}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"q","in":"query","required":false,"description":"Busca por número, e-mail ou nome.","schema":{"type":"string","maxLength":100}},{"name":"createdFrom","in":"query","required":false,"schema":{"type":"string","format":"date-time"}},{"name":"createdTo","in":"query","required":false,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Número sequencial do pedido na loja."},"externalId":{"type":["string","null"]},"status":{"type":"string","enum":["pending","paid","completed","cancelled","expired","refunded"],"description":"Situação efetiva: pedido `pending` com `expiresAt` vencido já aparece como `expired`."},"paymentStatus":{"type":"string","enum":["pending","paid","partially_refunded","refunded","failed","cancelled","chargeback"],"description":"Situação efetiva do pagamento: pedido vencido aparece como `cancelled`."},"source":{"type":"string","enum":["checkout","api","imported","subscription_renewal"]},"environment":{"type":"string","enum":["sandbox","production"]},"currency":{"type":"string","const":"BRL"},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Soma dos itens em centavos."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Descontos de ofertas e cupom em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do pedido em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado em centavos."},"customer":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"email":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false},"metadata":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paidAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"refundedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","number","externalId","status","paymentStatus","source","environment","currency","subtotal","discountTotal","total","refundedTotal","customer","metadata","createdAt","paidAt","expiresAt","cancelledAt","refundedAt"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/orders/{orderId}":{"get":{"operationId":"api.orders.get","tags":["Pedidos"],"summary":"Consultar pedido","description":"Traz os itens com as respostas dos campos de checkout, os pagamentos e os reembolsos do pedido.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `orders:read`.","parameters":[{"name":"orderId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Número sequencial do pedido na loja."},"externalId":{"type":["string","null"]},"status":{"type":"string","enum":["pending","paid","completed","cancelled","expired","refunded"],"description":"Situação efetiva: pedido `pending` com `expiresAt` vencido já aparece como `expired`."},"paymentStatus":{"type":"string","enum":["pending","paid","partially_refunded","refunded","failed","cancelled","chargeback"],"description":"Situação efetiva do pagamento: pedido vencido aparece como `cancelled`."},"source":{"type":"string","enum":["checkout","api","imported","subscription_renewal"]},"environment":{"type":"string","enum":["sandbox","production"]},"currency":{"type":"string","const":"BRL"},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Soma dos itens em centavos."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Descontos de ofertas e cupom em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do pedido em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado em centavos."},"customer":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"email":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false},"metadata":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paidAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"refundedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"couponCode":{"type":["string","null"]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"productId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"priceId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"name":{"type":"string"},"priceName":{"type":["string","null"]},"productType":{"type":"string","enum":["digital","service","subscription","physical","donation","minecraft_item"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Preço unitário em centavos."},"discountAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Desconto do item em centavos."},"totalAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do item em centavos."},"checkoutFields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"}},"required":["key","label","value"],"additionalProperties":false}}},"required":["id","productId","priceId","name","priceName","productType","quantity","unitAmount","discountAmount","totalAmount","checkoutFields"],"additionalProperties":false}},"payments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"provider":{"type":"string","enum":["abacatepay","asaas","efi","infinitepay","inter","mercadopago","nupay","pagarme","pagseguro","paghiper","picpay","stripe","woovi"]},"method":{"type":"string","enum":["pix","boleto","card","nupay"]},"status":{"type":"string","enum":["pending","authorized","confirmed","overdue","partially_refunded","refunded","failed","cancelled","chargeback"]},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor cobrado em centavos."},"refundedAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor já reembolsado em centavos."},"currency":{"type":"string","const":"BRL"},"instructions":{"anyOf":[{"anyOf":[{"type":"object","properties":{"method":{"type":"string","const":"pix"},"copyPaste":{"type":"string"},"qrCodeImage":{"type":["string","null"]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["method","copyPaste","qrCodeImage","expiresAt"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"boleto"},"barcode":{"type":"string"},"digitableLine":{"type":["string","null"]},"pdfUrl":{"type":["string","null"]},"pixCopyPaste":{"type":["string","null"]},"dueDate":{"type":"string","format":"date"}},"required":["method","barcode","digitableLine","pdfUrl","pixCopyPaste","dueDate"],"additionalProperties":false},{"type":"object","properties":{"method":{"type":"string","const":"card"},"brand":{"type":["string","null"]},"last4":{"type":["string","null"]},"installments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["method","brand","last4","installments"],"additionalProperties":false}]},{"type":"null"}]},"failureReason":{"type":["string","null"]},"dueAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paidAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","orderId","provider","method","status","amount","refundedAmount","currency","instructions","failureReason","dueAt","expiresAt","paidAt","createdAt"],"additionalProperties":false}},"refunds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor reembolsado em centavos."},"status":{"type":"string","enum":["pending","processing","succeeded","failed","cancelled"]},"reason":{"type":["string","null"]},"initiatedBy":{"type":"string","enum":["merchant","api","provider","system"]},"failureReason":{"type":["string","null"]},"processedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","orderId","paymentId","amount","status","reason","initiatedBy","failureReason","processedAt","createdAt"],"additionalProperties":false}}},"required":["id","number","externalId","status","paymentStatus","source","environment","currency","subtotal","discountTotal","total","refundedTotal","customer","metadata","createdAt","paidAt","expiresAt","cancelledAt","refundedAt","couponCode","items","payments","refunds"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/orders/{orderId}/cancel":{"post":{"operationId":"api.orders.cancel","tags":["Pedidos"],"summary":"Cancelar pedido","description":"Cancela um pedido que ainda aguarda pagamento: as cobranças abertas são canceladas e o estoque e o cupom reservados voltam. Só pedido com situação efetiva `pending` pode ser cancelado; qualquer outro, inclusive o pedido com `expiresAt` vencido (que já aparece como `expired`), responde `409 conflict`. Pedido pago se resolve com reembolso (`POST /refunds`).\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `orders:write`.\n\n**Idempotência:** aceita o cabeçalho `Idempotency-Key`.","parameters":[{"name":"orderId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"De 1 a 255 caracteres visíveis. Repetir a chamada com a mesma chave devolve a mesma resposta por 24 horas.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","maxLength":500}}}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Número sequencial do pedido na loja."},"externalId":{"type":["string","null"]},"status":{"type":"string","enum":["pending","paid","completed","cancelled","expired","refunded"],"description":"Situação efetiva: pedido `pending` com `expiresAt` vencido já aparece como `expired`."},"paymentStatus":{"type":"string","enum":["pending","paid","partially_refunded","refunded","failed","cancelled","chargeback"],"description":"Situação efetiva do pagamento: pedido vencido aparece como `cancelled`."},"source":{"type":"string","enum":["checkout","api","imported","subscription_renewal"]},"environment":{"type":"string","enum":["sandbox","production"]},"currency":{"type":"string","const":"BRL"},"subtotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Soma dos itens em centavos."},"discountTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Descontos de ofertas e cupom em centavos."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total do pedido em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado em centavos."},"customer":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"email":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false},"metadata":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"paidAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"refundedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","number","externalId","status","paymentStatus","source","environment","currency","subtotal","discountTotal","total","refundedTotal","customer","metadata","createdAt","paidAt","expiresAt","cancelledAt","refundedAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/refunds":{"get":{"operationId":"api.refunds.list","tags":["Reembolsos"],"summary":"Listar reembolsos","description":"Reembolsos da loja, do mais recente para o mais antigo, com filtro por pedido ou pagamento.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `orders:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"Itens por página (1 a 100).","schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":200}},{"name":"orderId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"paymentId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor reembolsado em centavos."},"status":{"type":"string","enum":["pending","processing","succeeded","failed","cancelled"]},"reason":{"type":["string","null"]},"initiatedBy":{"type":"string","enum":["merchant","api","provider","system"]},"failureReason":{"type":["string","null"]},"processedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","orderId","paymentId","amount","status","reason","initiatedBy","failureReason","processedAt","createdAt"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]},"post":{"operationId":"api.refunds.create","tags":["Reembolsos"],"summary":"Reembolsar pagamento","description":"Reembolsa um pagamento confirmado: parcial (`amount`) ou todo o saldo restante (sem `amount`, descontando reembolsos em andamento). Exige `Idempotency-Key`. O reembolso total revoga os acessos marcados para revogar em reembolso e dispara `order.refunded`.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `orders:write`.\n\n**Idempotência:** exige o cabeçalho `Idempotency-Key`.\n\n**Limite:** 60 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"De 1 a 255 caracteres visíveis. Repetir a chamada com a mesma chave devolve a mesma resposta por 24 horas.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentId":{"type":"string","format":"uuid"},"amount":{"description":"Valor em centavos para reembolso parcial. Sem `amount`, reembolsa todo o saldo.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"reason":{"type":"string","maxLength":500}},"required":["paymentId"]}}}},"responses":{"201":{"description":"Criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor reembolsado em centavos."},"status":{"type":"string","enum":["pending","processing","succeeded","failed","cancelled"]},"reason":{"type":["string","null"]},"initiatedBy":{"type":"string","enum":["merchant","api","provider","system"]},"failureReason":{"type":["string","null"]},"processedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","orderId","paymentId","amount","status","reason","initiatedBy","failureReason","processedAt","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos. `refund_not_allowed`: Este pagamento não pode ser reembolsado. `refund_amount_exceeded`: O valor do reembolso é maior que o saldo disponível do pagamento.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/refunds/{refundId}":{"get":{"operationId":"api.refunds.get","tags":["Reembolsos"],"summary":"Consultar reembolso","description":"Valor, status e motivo de um reembolso.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `orders:read`.","parameters":[{"name":"refundId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"paymentId":{"type":"string","format":"uuid"},"amount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor reembolsado em centavos."},"status":{"type":"string","enum":["pending","processing","succeeded","failed","cancelled"]},"reason":{"type":["string","null"]},"initiatedBy":{"type":"string","enum":["merchant","api","provider","system"]},"failureReason":{"type":["string","null"]},"processedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","orderId","paymentId","amount","status","reason","initiatedBy","failureReason","processedAt","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/customers":{"get":{"operationId":"api.customers.list","tags":["Clientes"],"summary":"Listar clientes","description":"Clientes da loja, do mais recente para o mais antigo, com busca por nome ou e-mail e filtro por status. O documento sai só com os 4 últimos dígitos.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `customers:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"Itens por página (1 a 100).","schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":200}},{"name":"q","in":"query","required":false,"description":"Busca por nome ou e-mail.","schema":{"type":"string","maxLength":100}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","blocked"]}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"name":{"type":["string","null"]},"phone":{"type":["string","null"]},"document":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["cpf","cnpj"]},"last4":{"type":"string"}},"required":["type","last4"],"additionalProperties":false},{"type":"null"}],"description":"Só o tipo e os 4 últimos dígitos. O documento completo nunca sai pela API."},"status":{"type":"string","enum":["active","blocked"]},"source":{"type":"string","enum":["checkout","manual","api","imported"]},"marketingConsent":{"type":"boolean"},"notes":{"type":["string","null"]},"metrics":{"anyOf":[{"type":"object","properties":{"paidOrdersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetimeValue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total pago pelo cliente em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado ao cliente em centavos."},"firstOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["paidOrdersCount","lifetimeValue","refundedTotal","firstOrderAt","lastOrderAt"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","email","name","phone","document","status","source","marketingConsent","notes","metrics","createdAt"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]},"post":{"operationId":"api.customers.upsert","tags":["Clientes"],"summary":"Criar ou atualizar cliente","description":"Cria o cliente ou atualiza o existente com o mesmo e-mail (nome, telefone e documento informados).\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `customers:write`.\n\n**Idempotência:** aceita o cabeçalho `Idempotency-Key`.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"De 1 a 255 caracteres visíveis. Repetir a chamada com a mesma chave devolve a mesma resposta por 24 horas.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email"},"name":{"type":"string","minLength":1,"maxLength":160},"phone":{"type":"string","pattern":"^\\+?\\d{10,15}$","description":"Só números, com DDD."},"document":{"description":"CPF ou CNPJ válido.","type":"string","maxLength":20},"marketingConsent":{"type":"boolean"}},"required":["email"]}}}},"responses":{"200":{"description":"Já existia um cliente com este e-mail; os dados foram atualizados.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"name":{"type":["string","null"]},"phone":{"type":["string","null"]},"document":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["cpf","cnpj"]},"last4":{"type":"string"}},"required":["type","last4"],"additionalProperties":false},{"type":"null"}],"description":"Só o tipo e os 4 últimos dígitos. O documento completo nunca sai pela API."},"status":{"type":"string","enum":["active","blocked"]},"source":{"type":"string","enum":["checkout","manual","api","imported"]},"marketingConsent":{"type":"boolean"},"notes":{"type":["string","null"]},"metrics":{"anyOf":[{"type":"object","properties":{"paidOrdersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetimeValue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total pago pelo cliente em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado ao cliente em centavos."},"firstOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["paidOrdersCount","lifetimeValue","refundedTotal","firstOrderAt","lastOrderAt"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","email","name","phone","document","status","source","marketingConsent","notes","metrics","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"201":{"description":"Criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"name":{"type":["string","null"]},"phone":{"type":["string","null"]},"document":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["cpf","cnpj"]},"last4":{"type":"string"}},"required":["type","last4"],"additionalProperties":false},{"type":"null"}],"description":"Só o tipo e os 4 últimos dígitos. O documento completo nunca sai pela API."},"status":{"type":"string","enum":["active","blocked"]},"source":{"type":"string","enum":["checkout","manual","api","imported"]},"marketingConsent":{"type":"boolean"},"notes":{"type":["string","null"]},"metrics":{"anyOf":[{"type":"object","properties":{"paidOrdersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetimeValue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total pago pelo cliente em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado ao cliente em centavos."},"firstOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["paidOrdersCount","lifetimeValue","refundedTotal","firstOrderAt","lastOrderAt"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","email","name","phone","document","status","source","marketingConsent","notes","metrics","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação. `project_restricted`: Esta loja está com restrições por pendência de faturamento. Regularize a fatura para continuar.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/customers/{customerId}":{"get":{"operationId":"api.customers.get","tags":["Clientes"],"summary":"Consultar cliente","description":"Dados do cliente e métricas de compra: pedidos pagos, total pago e total reembolsado.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `customers:read`.","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"name":{"type":["string","null"]},"phone":{"type":["string","null"]},"document":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["cpf","cnpj"]},"last4":{"type":"string"}},"required":["type","last4"],"additionalProperties":false},{"type":"null"}],"description":"Só o tipo e os 4 últimos dígitos. O documento completo nunca sai pela API."},"status":{"type":"string","enum":["active","blocked"]},"source":{"type":"string","enum":["checkout","manual","api","imported"]},"marketingConsent":{"type":"boolean"},"notes":{"type":["string","null"]},"metrics":{"anyOf":[{"type":"object","properties":{"paidOrdersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetimeValue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total pago pelo cliente em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado ao cliente em centavos."},"firstOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["paidOrdersCount","lifetimeValue","refundedTotal","firstOrderAt","lastOrderAt"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","email","name","phone","document","status","source","marketingConsent","notes","metrics","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]},"patch":{"operationId":"api.customers.update","tags":["Clientes"],"summary":"Alterar cliente","description":"Altera o nome, o telefone e as observações internas. O e-mail não muda pela API: a troca é feita no painel.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `customers:write`.","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"anyOf":[{"type":"string","minLength":1,"maxLength":160},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","pattern":"^\\+?\\d{10,15}$","description":"Só números, com DDD."},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]}}}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string"},"name":{"type":["string","null"]},"phone":{"type":["string","null"]},"document":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["cpf","cnpj"]},"last4":{"type":"string"}},"required":["type","last4"],"additionalProperties":false},{"type":"null"}],"description":"Só o tipo e os 4 últimos dígitos. O documento completo nunca sai pela API."},"status":{"type":"string","enum":["active","blocked"]},"source":{"type":"string","enum":["checkout","manual","api","imported"]},"marketingConsent":{"type":"boolean"},"notes":{"type":["string","null"]},"metrics":{"anyOf":[{"type":"object","properties":{"paidOrdersCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lifetimeValue":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total pago pelo cliente em centavos."},"refundedTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reembolsado ao cliente em centavos."},"firstOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastOrderAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["paidOrdersCount","lifetimeValue","refundedTotal","firstOrderAt","lastOrderAt"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","email","name","phone","document","status","source","marketingConsent","notes","metrics","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação. `project_restricted`: Esta loja está com restrições por pendência de faturamento. Regularize a fatura para continuar.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/deliveries":{"get":{"operationId":"deliveries.list","tags":["Entregas"],"summary":"Listar entregas","description":"Entregas da loja, da mais recente para a mais antiga, com filtros por status, canal, pedido e cliente.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `deliveries:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"Itens por página (1 a 100).","schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","leased","succeeded","failed","dead_letter","cancelled"]}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["minecraft","discord","telegram","webhook","email","download","license_key"]}},{"name":"orderId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id da entrega (o mesmo `operationId` do evento `delivery.requested`)."},"entitlementId":{"type":"string","format":"uuid"},"customerId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"orderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"productId":{"type":"string","format":"uuid"},"benefitId":{"type":"string","format":"uuid"},"channel":{"type":"string","enum":["minecraft","discord","telegram","webhook","email","download","license_key"]},"kind":{"type":"string","enum":["grant","revoke","resend"]},"status":{"type":"string","enum":["pending","leased","succeeded","failed","dead_letter","cancelled"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxAttempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"externalReference":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","entitlementId","customerId","orderId","productId","benefitId","channel","kind","status","attempts","maxAttempts","nextAttemptAt","error","externalReference","downloadUrl","createdAt","completedAt"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/deliveries/{id}":{"get":{"operationId":"deliveries.get","tags":["Entregas"],"summary":"Consultar entrega","description":"Status, tentativas, último erro e link de download (quando houver) de uma entrega.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `deliveries:read`.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Id da entrega (o mesmo `operationId` do evento `delivery.requested`)."},"entitlementId":{"type":"string","format":"uuid"},"customerId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"orderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"productId":{"type":"string","format":"uuid"},"benefitId":{"type":"string","format":"uuid"},"channel":{"type":"string","enum":["minecraft","discord","telegram","webhook","email","download","license_key"]},"kind":{"type":"string","enum":["grant","revoke","resend"]},"status":{"type":"string","enum":["pending","leased","succeeded","failed","dead_letter","cancelled"]},"attempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"maxAttempts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextAttemptAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]},"externalReference":{"type":["string","null"]},"downloadUrl":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","entitlementId","customerId","orderId","productId","benefitId","channel","kind","status","attempts","maxAttempts","nextAttemptAt","error","externalReference","downloadUrl","createdAt","completedAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/deliveries/{id}/complete":{"post":{"operationId":"deliveries.complete","tags":["Entregas"],"summary":"Confirmar entrega de serviço externo","description":"O serviço externo confirma a entrega, com link de download opcional. Repetir a confirmação é seguro.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `deliveries:write`.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"O `operationId` recebido em `delivery.requested`."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"externalReference":{"type":"string","minLength":1,"maxLength":255},"downloadUrl":{"type":"string","maxLength":2048,"format":"uri"},"expiresAt":{"type":"string","format":"date-time"},"watermarked":{"type":"boolean"},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"anyOf":[{"type":"string","maxLength":500},{"type":"number"},{"type":"boolean"}]}}},"required":["externalReference"]}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"operationId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["succeeded","pending","failed","dead_letter"]}},"required":["operationId","status"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`delivery_already_finalized`: Esta entrega já foi finalizada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/deliveries/{id}/fail":{"post":{"operationId":"deliveries.fail","tags":["Entregas"],"summary":"Informar falha de serviço externo","description":"O serviço externo informa que não conseguiu entregar. Com `retryable: true`, a MinePag agenda uma nova tentativa com intervalo crescente.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `deliveries:write`.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"O `operationId` recebido em `delivery.requested`."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","pattern":"^[a-z0-9_]{1,64}$"},"message":{"type":"string","minLength":1,"maxLength":500},"retryable":{"default":false,"type":"boolean"},"externalReference":{"type":"string","minLength":1,"maxLength":255}},"required":["code","message"]}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"operationId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["succeeded","pending","failed","dead_letter"]}},"required":["operationId","status"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`delivery_already_finalized`: Esta entrega já foi finalizada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/deliveries/{id}/resend":{"post":{"operationId":"deliveries.resend","tags":["Entregas"],"summary":"Reenviar entrega","description":"Pede de novo a entrega ao mesmo canal do acesso (por exemplo, um novo `delivery.requested` com `kind: resend` para o serviço externo). Só acessos ativos podem ser reenviados. O reenvio não conta no faturamento.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `deliveries:write`.\n\n**Idempotência:** aceita o cabeçalho `Idempotency-Key`.\n\n**Limite:** 120 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"O `operationId` de uma entrega do acesso."}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"operations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Quantas entregas de reenvio foram criadas."}},"required":["operations"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/entitlements":{"get":{"operationId":"entitlements.list","tags":["Acessos liberados"],"summary":"Listar acessos liberados","description":"Benefícios concedidos aos clientes, do mais recente para o mais antigo, com filtros por status, cliente, pedido e assinatura.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `deliveries:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"Itens por página (1 a 100).","schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","active","revoked","expired"]}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"orderId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"subscriptionId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"customerId":{"type":"string","format":"uuid"},"benefitId":{"type":"string","format":"uuid"},"benefitType":{"type":"string","enum":["download","content_access","discord_role","telegram_access","minecraft_command","license_key","external_webhook","service","custom"]},"benefitName":{"type":"string"},"productId":{"type":"string","format":"uuid"},"orderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"orderItemId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"subscriptionId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"status":{"type":"string","enum":["pending","active","revoked","expired"]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"revokeReason":{"anyOf":[{"type":"string","enum":["refund","chargeback","cancellation","subscription_ended","subscription_paused","expiration","manual"]},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","customerId","benefitId","benefitType","benefitName","productId","orderId","orderItemId","subscriptionId","status","quantity","startsAt","endsAt","revokedAt","revokeReason","createdAt"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/subscriptions":{"get":{"operationId":"api.subscriptions.list","tags":["Assinaturas"],"summary":"Listar assinaturas","description":"Assinaturas da loja, da mais recente para a mais antiga, com filtros por status, cliente e produto.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `subscriptions:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"Itens por página (1 a 100).","schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","trialing","active","past_due","paused","suspended","cancelled","expired"]}},{"name":"customerId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"productId","in":"query","required":false,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","trialing","active","past_due","paused","suspended","cancelled","expired"]},"billingMode":{"type":"string","enum":["provider_managed","platform_scheduled"],"description":"`provider_managed`: o gateway cobra sozinho. `platform_scheduled`: a MinePag emite as faturas."},"customer":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"email":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor por período em centavos."},"currency":{"type":"string","const":"BRL"},"orderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Pedido que iniciou a assinatura."},"currentPeriodStart":{"type":"string","format":"date-time"},"currentPeriodEnd":{"type":"string","format":"date-time"},"nextBillingAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"trialEndsAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"cancelAtPeriodEnd":{"type":"boolean","description":"Cancelamento agendado para o fim do período atual."},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","status","billingMode","customer","productId","productName","priceId","priceName","interval","intervalCount","quantity","unitAmount","currency","orderId","currentPeriodStart","currentPeriodEnd","nextBillingAt","trialEndsAt","cancelAtPeriodEnd","cancelledAt","endedAt","createdAt"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/subscriptions/{subscriptionId}":{"get":{"operationId":"api.subscriptions.get","tags":["Assinaturas"],"summary":"Consultar assinatura","description":"Status, período atual, próxima cobrança e fim do teste grátis da assinatura.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `subscriptions:read`.","parameters":[{"name":"subscriptionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","trialing","active","past_due","paused","suspended","cancelled","expired"]},"billingMode":{"type":"string","enum":["provider_managed","platform_scheduled"],"description":"`provider_managed`: o gateway cobra sozinho. `platform_scheduled`: a MinePag emite as faturas."},"customer":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"email":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor por período em centavos."},"currency":{"type":"string","const":"BRL"},"orderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Pedido que iniciou a assinatura."},"currentPeriodStart":{"type":"string","format":"date-time"},"currentPeriodEnd":{"type":"string","format":"date-time"},"nextBillingAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"trialEndsAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"cancelAtPeriodEnd":{"type":"boolean","description":"Cancelamento agendado para o fim do período atual."},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","status","billingMode","customer","productId","productName","priceId","priceName","interval","intervalCount","quantity","unitAmount","currency","orderId","currentPeriodStart","currentPeriodEnd","nextBillingAt","trialEndsAt","cancelAtPeriodEnd","cancelledAt","endedAt","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/subscriptions/{subscriptionId}/cancel":{"post":{"operationId":"api.subscriptions.cancel","tags":["Assinaturas"],"summary":"Cancelar assinatura","description":"Cancela a assinatura. `period_end` (padrão) mantém o acesso até o fim do período já pago; `immediately` encerra agora, revoga os benefícios e cancela as faturas em aberto. Com fatura vencida, só `immediately` é aceito. Em ambos, a cobrança no gateway para.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `subscriptions:write`.\n\n**Idempotência:** aceita o cabeçalho `Idempotency-Key`.","parameters":[{"name":"subscriptionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"De 1 a 255 caracteres visíveis. Repetir a chamada com a mesma chave devolve a mesma resposta por 24 horas.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"default":"period_end","description":"`period_end`: o cliente mantém o acesso até o fim do período pago. `immediately`: encerra agora e revoga os benefícios.","type":"string","enum":["period_end","immediately"]},"reason":{"type":"string","maxLength":500}}}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","trialing","active","past_due","paused","suspended","cancelled","expired"]},"billingMode":{"type":"string","enum":["provider_managed","platform_scheduled"],"description":"`provider_managed`: o gateway cobra sozinho. `platform_scheduled`: a MinePag emite as faturas."},"customer":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"email":{"type":"string"},"name":{"type":["string","null"]}},"required":["id","email","name"],"additionalProperties":false},"productId":{"type":"string","format":"uuid"},"productName":{"type":"string"},"priceId":{"type":"string","format":"uuid"},"priceName":{"type":["string","null"]},"interval":{"anyOf":[{"type":"string","enum":["day","week","month","year"]},{"type":"null"}]},"intervalCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitAmount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Valor por período em centavos."},"currency":{"type":"string","const":"BRL"},"orderId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Pedido que iniciou a assinatura."},"currentPeriodStart":{"type":"string","format":"date-time"},"currentPeriodEnd":{"type":"string","format":"date-time"},"nextBillingAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"trialEndsAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"cancelAtPeriodEnd":{"type":"boolean","description":"Cancelamento agendado para o fim do período atual."},"cancelledAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"endedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","status","billingMode","customer","productId","productName","priceId","priceName","interval","intervalCount","quantity","unitAmount","currency","orderId","currentPeriodStart","currentPeriodEnd","nextBillingAt","trialEndsAt","cancelAtPeriodEnd","cancelledAt","endedAt","createdAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"502":{"description":"`payment_provider_unavailable`: O gateway de pagamento não respondeu. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/webhook-endpoints":{"get":{"operationId":"api.webhook_endpoints.list","tags":["Webhooks"],"summary":"Listar endpoints de webhook","description":"Endpoints de webhook e de serviço externo da loja, do mais recente para o mais antigo. O segredo de assinatura nunca aparece aqui.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `webhooks:read`.","parameters":[{"name":"limit","in":"query","required":false,"description":"Itens por página (1 a 100).","schema":{"default":20,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"Valor de `meta.pagination.nextCursor` da página anterior.","schema":{"type":"string","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["enabled","disabled","failing"]}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"type":"string","enum":["generic","fulfillment_service"],"description":"`fulfillment_service`: serviço externo de entrega, que recebe `delivery.requested`."},"status":{"type":"string","enum":["enabled","disabled","failing"]},"url":{"type":"string"},"description":{"type":["string","null"]},"eventTypes":{"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.refunded","order.cancelled","payment.confirmed","payment.refunded","payment.chargeback","entitlement.granted","entitlement.revoked","delivery.requested","delivery.completed","delivery.failed","subscription.created","subscription.renewed","subscription.past_due","subscription.cancelled","subscription.ended","customer.created","customer.deleted"]}},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSucceededAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastFailedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"disabledReason":{"type":["string","null"]},"previousSecretExpiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Até quando o segredo anterior ainda assina os envios, depois de uma troca."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","status","url","description","eventTypes","consecutiveFailures","lastSucceededAt","lastFailedAt","disabledReason","previousSecretExpiresAt","createdAt","updatedAt"],"additionalProperties":false}},"meta":{"type":"object","properties":{"requestId":{"type":"string"},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"nextCursor":{"description":"Envie em `cursor` para buscar a próxima página. `null` na última.","type":["string","null"]}},"required":["limit","hasMore","nextCursor"],"additionalProperties":false}},"required":["requestId","pagination"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]},"post":{"operationId":"api.webhook_endpoints.create","tags":["Webhooks"],"summary":"Criar endpoint de webhook","description":"Cadastra um endpoint HTTPS público. A resposta traz o segredo de assinatura (`secret`) uma única vez: guarde-o para validar o cabeçalho `webhook-signature` dos envios.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `webhooks:write`.\n\n**Idempotência:** aceita o cabeçalho `Idempotency-Key`.\n\n**Limite:** 60 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"De 1 a 255 caracteres visíveis. Repetir a chamada com a mesma chave devolve a mesma resposta por 24 horas.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"description":"URL HTTPS pública, sem usuário, senha ou fragmento."},"description":{"type":"string","maxLength":255},"kind":{"default":"generic","type":"string","enum":["generic","fulfillment_service"]},"eventTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.refunded","order.cancelled","payment.confirmed","payment.refunded","payment.chargeback","entitlement.granted","entitlement.revoked","delivery.requested","delivery.completed","delivery.failed","subscription.created","subscription.renewed","subscription.past_due","subscription.cancelled","subscription.ended","customer.created","customer.deleted"]}}},"required":["url","eventTypes"]}}}},"responses":{"201":{"description":"Criado.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"type":"string","enum":["generic","fulfillment_service"],"description":"`fulfillment_service`: serviço externo de entrega, que recebe `delivery.requested`."},"status":{"type":"string","enum":["enabled","disabled","failing"]},"url":{"type":"string"},"description":{"type":["string","null"]},"eventTypes":{"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.refunded","order.cancelled","payment.confirmed","payment.refunded","payment.chargeback","entitlement.granted","entitlement.revoked","delivery.requested","delivery.completed","delivery.failed","subscription.created","subscription.renewed","subscription.past_due","subscription.cancelled","subscription.ended","customer.created","customer.deleted"]}},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSucceededAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastFailedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"disabledReason":{"type":["string","null"]},"previousSecretExpiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Até quando o segredo anterior ainda assina os envios, depois de uma troca."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"secret":{"type":"string","description":"Segredo de assinatura (`whsec_…`). Só aparece nesta resposta e na troca de segredo."}},"required":["id","kind","status","url","description","eventTypes","consecutiveFailures","lastSucceededAt","lastFailedAt","disabledReason","previousSecretExpiresAt","createdAt","updatedAt","secret"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação. `project_restricted`: Esta loja está com restrições por pendência de faturamento. Regularize a fatura para continuar.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"409":{"description":"`idempotency_conflict`: Esta chave de idempotência já foi usada com outros dados. `conflict`: O recurso foi alterado por outra operação. Tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/webhook-endpoints/{endpointId}":{"get":{"operationId":"api.webhook_endpoints.get","tags":["Webhooks"],"summary":"Consultar endpoint de webhook","description":"Configuração e saúde do endpoint: falhas seguidas, últimos envios com sucesso e com falha e o motivo da desativação, quando houver.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `webhooks:read`.","parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"type":"string","enum":["generic","fulfillment_service"],"description":"`fulfillment_service`: serviço externo de entrega, que recebe `delivery.requested`."},"status":{"type":"string","enum":["enabled","disabled","failing"]},"url":{"type":"string"},"description":{"type":["string","null"]},"eventTypes":{"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.refunded","order.cancelled","payment.confirmed","payment.refunded","payment.chargeback","entitlement.granted","entitlement.revoked","delivery.requested","delivery.completed","delivery.failed","subscription.created","subscription.renewed","subscription.past_due","subscription.cancelled","subscription.ended","customer.created","customer.deleted"]}},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSucceededAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastFailedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"disabledReason":{"type":["string","null"]},"previousSecretExpiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Até quando o segredo anterior ainda assina os envios, depois de uma troca."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","status","url","description","eventTypes","consecutiveFailures","lastSucceededAt","lastFailedAt","disabledReason","previousSecretExpiresAt","createdAt","updatedAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]},"patch":{"operationId":"api.webhook_endpoints.update","tags":["Webhooks"],"summary":"Alterar endpoint de webhook","description":"Altera só os campos enviados. `enabled: false` pausa os envios; `enabled: true` reativa o endpoint e zera as falhas seguidas.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `webhooks:write`.\n\n**Limite:** 60 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048},"description":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"kind":{"type":"string","enum":["generic","fulfillment_service"]},"eventTypes":{"minItems":1,"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.refunded","order.cancelled","payment.confirmed","payment.refunded","payment.chargeback","entitlement.granted","entitlement.revoked","delivery.requested","delivery.completed","delivery.failed","subscription.created","subscription.renewed","subscription.past_due","subscription.cancelled","subscription.ended","customer.created","customer.deleted"]}},"enabled":{"description":"`false` pausa os envios; `true` reativa o endpoint e zera as falhas seguidas.","type":"boolean"}}}}}},"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"type":"string","enum":["generic","fulfillment_service"],"description":"`fulfillment_service`: serviço externo de entrega, que recebe `delivery.requested`."},"status":{"type":"string","enum":["enabled","disabled","failing"]},"url":{"type":"string"},"description":{"type":["string","null"]},"eventTypes":{"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.refunded","order.cancelled","payment.confirmed","payment.refunded","payment.chargeback","entitlement.granted","entitlement.revoked","delivery.requested","delivery.completed","delivery.failed","subscription.created","subscription.renewed","subscription.past_due","subscription.cancelled","subscription.ended","customer.created","customer.deleted"]}},"consecutiveFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSucceededAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"lastFailedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"disabledReason":{"type":["string","null"]},"previousSecretExpiresAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Até quando o segredo anterior ainda assina os envios, depois de uma troca."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","kind","status","url","description","eventTypes","consecutiveFailures","lastSucceededAt","lastFailedAt","disabledReason","previousSecretExpiresAt","createdAt","updatedAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"400":{"description":"`invalid_json`: O corpo da requisição não é um JSON válido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação. `project_restricted`: Esta loja está com restrições por pendência de faturamento. Regularize a fatura para continuar.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"413":{"description":"`payload_too_large`: O corpo da requisição é grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]},"delete":{"operationId":"api.webhook_endpoints.delete","tags":["Webhooks"],"summary":"Remover endpoint de webhook","description":"Remove o endpoint. Os envios pendentes deixam de ser feitos.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `webhooks:write`.\n\n**Limite:** 60 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"deleted":{"type":"boolean","const":true}},"required":["id","deleted"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/webhook-endpoints/{endpointId}/rotate-secret":{"post":{"operationId":"api.webhook_endpoints.rotate_secret","tags":["Webhooks"],"summary":"Trocar o segredo de assinatura","description":"Gera um segredo de assinatura novo e devolve o valor uma única vez. Durante 24 horas os envios saem assinados com os dois segredos (o novo e o anterior), tempo para trocar o segredo no seu sistema sem rejeitar eventos.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `webhooks:write`.\n\n**Limite:** 60 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"secret":{"type":"string","description":"Segredo novo (`whsec_…`). Só aparece nesta resposta."},"previousSecretExpiresAt":{"type":"string","format":"date-time","description":"Até quando os envios saem assinados também com o segredo anterior."}},"required":["secret","previousSecretExpiresAt"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}},"/webhook-endpoints/{endpointId}/test":{"post":{"operationId":"api.webhook_endpoints.test","tags":["Webhooks"],"summary":"Enviar evento de teste","description":"Envia agora um evento `webhook.test` assinado para o endpoint e devolve a resposta dele. O teste não entra no histórico de envios e não é reenviado.\n\n**Chave:** Só chave secreta (chamada pelo servidor).\n\n**Escopo:** `webhooks:write`.\n\n**Limite:** 20 requisições a cada 1 h, além do limite geral de 600 por minuto por chave.","parameters":[{"name":"endpointId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Sucesso.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"ok":{"type":"boolean","description":"`true` quando o endpoint respondeu com status 2xx."},"responseStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"responseMs":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"responseBodyExcerpt":{"type":["string","null"]},"errorCode":{"type":["string","null"]},"error":{"type":["string","null"]}},"required":["ok","responseStatus","responseMs","responseBodyExcerpt","errorCode","error"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","meta"],"additionalProperties":false}}}},"401":{"description":"`unauthenticated`: Autenticação necessária. `invalid_api_key`: Chave de API inválida, expirada ou revogada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"403":{"description":"`forbidden`: Você não tem permissão para executar esta ação. `insufficient_scope`: A chave de API não tem o escopo necessário para esta operação.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"404":{"description":"`not_found`: Recurso não encontrado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"422":{"description":"`validation_failed`: Os dados enviados são inválidos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"429":{"description":"`rate_limited`: Muitas requisições. Aguarde um momento e tente novamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}},"500":{"description":"`internal_error`: Ocorreu um erro inesperado. Tente novamente em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Erro"}}}}},"security":[{"chaveSecreta":[]}]}}},"components":{"securitySchemes":{"chavePublicavel":{"type":"http","scheme":"bearer","description":"Chave publicável (`pk_…`). Pode ir para o navegador; dá acesso só ao catálogo, ao carrinho e ao checkout."},"chaveSecreta":{"type":"http","scheme":"bearer","description":"Chave secreta (`sk_…`). Use só no servidor; requisições de navegador (com `Origin`) são recusadas."}},"schemas":{"Erro":{"type":"object","properties":{"data":{"type":"null"},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"path":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"error":{"type":"object","properties":{"code":{"type":"string","enum":["unauthenticated","invalid_api_key","forbidden","insufficient_scope","not_found","invalid_json","validation_failed","payload_too_large","conflict","idempotency_conflict","rate_limited","project_restricted","checkout_paused","payment_method_unavailable","payment_declined","payment_provider_unavailable","refund_not_allowed","refund_amount_exceeded","cart_not_found","cart_empty","cart_already_checked_out","product_unavailable","out_of_stock","coupon_invalid","coupon_not_applicable","checkout_blocked","order_not_payable","invalid_webhook_signature","delivery_already_finalized","invalid_pairing_code","pairing_code_expired","server_token_revoked","server_paused","invalid_link_code","invalid_player_name","plugin_outdated","internal_error","service_unavailable"]},"message":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"details":{"description":"Dados para seguir o fluxo. Em `payment_declined`, o mesmo objeto da resposta de sucesso do checkout: pedido, pagamento recusado, `accessToken` e `orderUrl`. Em `payment_provider_unavailable` no checkout e na nova tentativa de pagamento, o pedido já criado, o pagamento pendente (sem cobrança), o `accessToken` e o `orderUrl`.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"requestId":{"type":"string"}},"required":["code","message","requestId"],"additionalProperties":false},"meta":{"type":"object","properties":{"requestId":{"type":"string"}},"required":["requestId"],"additionalProperties":false}},"required":["data","errors","error","meta"],"additionalProperties":false}}}}