{"info":{"title":"API Vindi","version":"v1"},"swagger":"2.0","produces":["application/json; charset=UTF-8"],"securityDefinitions":{"basic_auth":{"type":"basic","name":"Authorization","in":"header"}},"security":[{"basic_auth":[]}],"host":"app.vindi.com.br","basePath":"/api","tags":[{"name":"customers","description":"Clientes"},{"name":"plans","description":"Planos"},{"name":"products","description":"Produtos"},{"name":"payment_methods","description":"Métodos de pagamento"},{"name":"discounts","description":"Descontos"},{"name":"subscriptions","description":"Assinaturas"},{"name":"product_items","description":"Itens da assinatura"},{"name":"periods","description":"Períodos"},{"name":"bills","description":"Faturas"},{"name":"bill_items","description":"Itens da fatura"},{"name":"charges","description":"Cobranças"},{"name":"transactions","description":"Transações"},{"name":"payment_profiles","description":"Perfis de pagamento"},{"name":"usages","description":"Registros de utilização"},{"name":"invoices","description":"Notas fiscais"},{"name":"movements","description":"Movimentos financeiros"},{"name":"messages","description":"Mensagens"},{"name":"export_batches","description":"Lotes de exportação"},{"name":"import_batches","description":"Lotes de importação"},{"name":"issues","description":"Pendências"},{"name":"notifications","description":"Notificações"},{"name":"merchants","description":"Empresas"},{"name":"merchant_users","description":"Usuários associados"},{"name":"roles","description":"Perfis de acesso"},{"name":"users","description":"Usuários"},{"name":"public","description":"Operações públicas"},{"name":"wallets","description":"Carteiras digitais"},{"name":"affiliates","description":"Participantes do split de pagamento"},{"name":"partner","description":"Contas de parceiro (utilização exclusiva para parceiros da Vindi)"},{"name":"billing","description":"Criação de faturas de maneira otimizada."},{"name":"three_d_secure","description":"Autenticação 3D Secure 2.0"}],"paths":{"/v1/customers/{id}":{"put":{"summary":"Atualiza um cliente existente através do ID.","description":"Utilize este método para atualizar um cliente existente.\n\n#### Atualizando números de telefone\n\nA lista de números de telefone associada ao cliente é representada pelo array `phones`.\n\n- Para **atualizar** um objeto existente no array `phones`, simplesmente indique seu ID e os novos atributos.\n- Para **criar** um novo objeto, informe apenas os atributos sem o ID.\n- Para **remover** um objeto existente, inclua o atributo `\"_destroy\": \"1\"`, sem esquecer de informar o ID.\n\nAlém disso é possível omitir o parâmetro `phones` na requisição para não atualizar os produtos relacionados.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do cliente que deverá ser atualizado.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Customers"}}],"responses":{"200":{"description":"Cliente atualizado com sucesso.","schema":{"$ref":"#/definitions/Customer"}},"404":{"description":"Cliente não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["customers"],"operationId":"putV1CustomersId"},"delete":{"summary":"Arquiva um cliente específico através do ID.","description":"Esta operação moverá o cliente para a área de **Arquivados** da plataforma. O cliente poderá continuar recebendo novas assinaturas via API, sofrer alterações e terá seu histórico preservado.\n\nTodas as assinaturas e faturas pendentes serão canceladas automaticamente.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do cliente que deverá ser arquivado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Cliente arquivado com sucesso.","schema":{"$ref":"#/definitions/Customer"}},"404":{"description":"Cliente não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["customers"],"operationId":"deleteV1CustomersId"},"get":{"summary":"Retorna um cliente específico através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do cliente que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Cliente encontrado.","schema":{"$ref":"#/definitions/Customer"}},"404":{"description":"Cliente não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["customers"],"operationId":"getV1CustomersId"}},"/v1/customers":{"post":{"summary":"Cadastra um novo cliente.","description":"Utilize esta função para criar novos clientes na plataforma. Cliente é uma das entidades básicas do sistema. Ele representa a pessoa física ou jurídica que possui uma ou mais assinaturas.\n\n#### Código da API\n\nQuando utilizado, o campo `code` deve ser único em todo escopo da empresa. Recomendamos o uso de um código auto-incrementável do seu próprio banco de dados. Desaconselhamos a utilização de qualquer dado que seja informado pelo cliente, como e-mail ou número do documento.\n\n\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Customers"}}],"responses":{"201":{"description":"Cliente cadastrado com sucesso.","schema":{"$ref":"#/definitions/Customer"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["customers"],"operationId":"postV1Customers"},"get":{"summary":"Retorna uma lista de clientes.","description":"Utilize este método para listar os clientes associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003eemail\u003c/code\u003e, \u003ccode\u003eregistry_code\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","name","status","code","email","registry_code","created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Customer"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["customers"],"operationId":"getV1Customers"}},"/v1/customers/{id}/unarchive":{"post":{"summary":"Reverte o arquivamento de um cliente.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do cliente.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Arquivamento revertido com sucesso.","schema":{"$ref":"#/definitions/Customer"}},"404":{"description":"Cliente não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["customers"],"operationId":"postV1CustomersIdUnarchive"}},"/v1/plans/{id}":{"put":{"summary":"Atualiza um plano existente.","description":"Verifique documentação dos atributos no método `GET plans/{id}`.\n\n#### Atualizando produtos relacionados\n\nA lista de produtos relacionados à um plano é representado pelo array `plan_items`.\n\n- Para **atualizar** um objeto existente no array `plan_items`, simplesmente indique seu ID e os novos atributos.\n- Para **criar** um novo objeto, informe apenas os atributos sem o ID.\n- Para **remover** um objeto existente, inclua o atributo `\"_destroy\": \"1\"`, sem esquecer de informar o ID.\n\nAlém disso é possível omitir o parâmetro `plan_items` na requisição para não atualizar os produtos relacionados.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do plano que deverá ser atualizado.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Plans"}}],"responses":{"200":{"description":"Plano atualizado com sucesso.","schema":{"$ref":"#/definitions/Plan"}},"404":{"description":"Plano não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["plans"],"operationId":"putV1PlansId"},"get":{"summary":"Retorna um plano específico através do ID.","description":"Utilize esta função para obter um plano cadastrado na plataforma. Planos são utilizados para definir a base das assinaturas. Uma nova assinatura herdará a maioria dos atributos do plano respectivo no momento de sua criação. Se um plano for alterado, assinaturas associadas não serão atualizadas automaticamente.\n\n#### Duração do plano\n\nA duração do plano é definida a partir da combinação de 3 atributos: `interval`, `interval_count` e `billing_cycles`. Com esses atributos é possível gerar qualquer combinação possível de periodicidade e duração. Exemplos:\n\nDuração                          |`interval`|`interval_count`|`billing_cycles`\n---------------------------------|----------|---------------|----------------\nPlano mensal com duração ilimitada |'months'   | 1              | (nulo)\nPlano mensal com duração de 3 meses |'months'   | 1              | 3\nPlano semanal com duração de 3 meses |'days'   | 7              | 12\nPlano anual com duração ilimitada |'months'   | 12              | (nulo)\nPlano mensal com duração de 1 ano |'months'   | 12              | 1\n\n\nCalcula-se a duração de um período multiplicando a duração do intervalo (`interval`) pelo número de intervalos (`interval_count`). O número máximo de períodos é definido pelo atributo `billing_cycles`. Através destas combinações é possível gerar planos quinzenais, mensais, semanais, semestrais, trimestrais, anuais, etc.\n\nO atributo `interval_name` no retorno exibe o nome do período gerado a partir dessas configurações.\n\n#### Precificação\n\nUm plano não possui nenhuma informação relacionada ao preço. O valor de uma assinatura será calculado a partir dos produtos associados ao plano. Os produtos associados ao plano estão representados no atributo `plan_items`.\n\n#### Cobrança\n\nA data da geracão da cobrança de um período deve ser configurada usando os atributos `billing_trigger_type`, que define a orientação da data de cobrança, e `billing_trigger_day`, que define o dia da cobrança. Exemplos:\n\nCobrança| `billing_trigger_type` | `billing_trigger_day` |\n---------|-----------------------|----------------------\nExatamente no início do período| 'beginning_of_period' | 0\nCinco dias após o início do período| 'beginning_of_period' | 5\nDez dias antes do término do período| 'end_of_period' | -10\nUm dia após o término do período| 'end_of_period' | 1\nExatamento no dia 20 de cada mês| 'day_of_month' | 20\n\nÉ importante observar que o tipo de cobrança 'day_of_month' só pode ser usado em planos mensais.\n\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do plano que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Plano encontrado.","schema":{"$ref":"#/definitions/Plan"}},"404":{"description":"Plano não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["plans"],"operationId":"getV1PlansId"}},"/v1/plans":{"post":{"summary":"Cadastra um novo plano.","description":"Verifique documentação dos atributos no método `GET plans/{id}`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Plans"}}],"responses":{"201":{"description":"Plano cadastrado com sucesso.","schema":{"$ref":"#/definitions/Plan"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["plans"],"operationId":"postV1Plans"},"get":{"summary":"Retorna uma lista de planos.","description":"Utilize este método para listar os planos associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003einterval_count\u003c/code\u003e, \u003ccode\u003einterval\u003c/code\u003e, \u003ccode\u003ebilling_cycles\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003ebilling_trigger_day\u003c/code\u003e, \u003ccode\u003ebilling_trigger_type\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","installments","name","interval_count","interval","billing_cycles","code","status","billing_trigger_day","billing_trigger_type","created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Direção opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Plan"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["plans"],"operationId":"getV1Plans"}},"/v1/plans/{id}/plan_items":{"get":{"summary":"Retorna os itens do plano através de seu ID.","description":"Utilize este método para listar os itens associados a um produto. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination).\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"path","name":"id","description":"ID do plano cujos itens deverão ser retornados.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Itens encontrados.","schema":{"type":"array","items":{"$ref":"#/definitions/PlanItem"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["plans"],"operationId":"getV1PlansIdPlanItems"}},"/v1/products/{id}":{"put":{"summary":"Atualiza um produto existente.","description":"Verifique documentação dos atributos no método `GET products/{id}`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do produto que deverá ser atualizado.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Products"}}],"responses":{"200":{"description":"Produto atualizado com sucesso.","schema":{"$ref":"#/definitions/Product"}},"404":{"description":"Produto não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["products"],"operationId":"putV1ProductsId"},"get":{"summary":"Retorna um produto específico através do ID.","description":"Produtos definem os itens associados a uma assinatura ou fatura.\n\n#### Precificação\nA plataforma Vindi suporta vários tipos diferentes de cálculos de precificação para os produtos. Consulte este [artigo](http://atendimento.vindi.com.br/hc/pt-br/articles/203303380) para mais informações sobre os métodos de cálculo.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do produto que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Produto encontrado.","schema":{"$ref":"#/definitions/Product"}},"404":{"description":"Produto não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["products"],"operationId":"getV1ProductsId"}},"/v1/products":{"post":{"summary":"Cadastra um novo produto.","description":"Verifique documentação dos atributos no método `GET products/{id}`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Products"}}],"responses":{"201":{"description":"Produto cadastrado com sucesso.","schema":{"$ref":"#/definitions/Product"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["products"],"operationId":"postV1Products"},"get":{"summary":"Retorna uma lista de produtos.","description":"Utilize este método para listar os produtos associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003einvoice\u003c/code\u003e, \u003ccode\u003eunit\u003c/code\u003e, \u003ccode\u003epricing_schema_id\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e, \u003ccode\u003eupdated_at\u003c/code\u003e, \u003ccode\u003eschema_type\u003c/code\u003e e \u003ccode\u003eprice\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","name","code","status","invoice","unit","pricing_schema_id","created_at","updated_at","schema_type","price"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Product"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["products"],"operationId":"getV1Products"}},"/v1/payment_methods/{id}":{"get":{"summary":"Retorna um método de pagamento específico através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do método de pagamento que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Método de pagamento encontrado.","schema":{"$ref":"#/definitions/PaymentMethod"}},"404":{"description":"Método de pagamento não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_methods"],"operationId":"getV1PaymentMethodsId"}},"/v1/payment_methods":{"get":{"summary":"Lista todos os métodos de pagamento disponíveis.","description":"Métodos de pagamento representam as opções de pagamento disponíveis para seus clientes. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e e \u003ccode\u003ecode\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"id","enum":["id","name","code"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/PaymentMethod"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_methods"],"operationId":"getV1PaymentMethods"}},"/v1/discounts/{id}":{"delete":{"summary":"Cancela um desconto através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do desconto a ser cancelado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Desconto cancelado com sucesso.","schema":{"$ref":"#/definitions/Discount"}},"404":{"description":"Desconto não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["discounts"],"operationId":"deleteV1DiscountsId"},"get":{"summary":"Retorna uma desconto específico através do ID.","description":"Um desconto pode ser aplicado à um item específico de uma assinatura (`product_item`) e possui duração configurável (`cycles`). Utilize este método para obter detalhes de um desconto específico.\n\n#### Duração\nA duração de um desconto pode ser definida através do atributo `cycles` que representa o número de ciclos de recorrência onde o desconto será aplicado. É possível, por exemplo, configurar um desconto apenas para a próxima fatura, ou então conceder um desconto permanente. Neste último caso, o atributo `cycles` deverá permanecer nulo.\n\n#### Tipo\nCada desconto possui um tipo de cálculo diferente que deve ser informado no atributo `discount_type`. Os seguintes tipos de desconto estão disponíveis:\n\nTipo|Descrição\n----|----\n`percentage`|Porcentagem: Desconto baseado na porcentagem informada. Utilize um valor númerico entre 0.01 e 100.\n`amount`|Valor fixo: Desconto no valor exato informado. Mínimo: 0.01.\n`quantity`|Quantidade: Apenas para produtos com precificação por quantidade fixa (sem faixas). Informe um valor inteiro maior ou igual a 1.\n\n#### Cálculo\nTodos os descontos ativos serão aplicados no momento da geração da fatura e serão calculados a partir do valor original do item.\n\nCaso o total de descontos seja superior ao valor original, o preço final do produto permanecerá R$ 0,00.\n\n#### Desconto sobre desconto\nSe um item possuir mais de um desconto ativo, todos eles serão calculados a partir do valor original, conforme mencionado acima. Como exemplo, considere um item que custava originalmente R$ 100,00 e recebeu dois descontos: R$ 10,00 e 50%:\n\n```\nValor original: R$ 100,00\nDesconto 1: R$ 10,00\nDesconto 2: 50% de R$ 100,00 = R$ 50,00\n--\nValor final do produto: R$ 100,00 - R$ 60,00 = R$ 40,00\n```\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do desconto que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Desconto encontrado.","schema":{"$ref":"#/definitions/Discount"}},"404":{"description":"Desconto não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["discounts"],"operationId":"getV1DiscountsId"}},"/v1/discounts":{"post":{"summary":"Cria um desconto em uma assinatura existente.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Discounts"}}],"responses":{"201":{"description":"Desconto criado com sucesso.","schema":{"$ref":"#/definitions/Discount"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["discounts"],"operationId":"postV1Discounts"}},"/v1/subscriptions/{id}/reactivate":{"post":{"summary":"Reativa uma assinatura cancelada através do ID.","description":"Utilize esta função para reativar assinaturas canceladas. Leia mais sobre este assunto na [documentação sobre reativação de assinaturas](http://atendimento.vindi.com.br/hc/pt-br/articles/204893474).","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da assinatura a ser reativada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Assinatura reativada com sucesso.","schema":{"$ref":"#/definitions/Subscription"}},"404":{"description":"Assinatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"postV1SubscriptionsIdReactivate"}},"/v1/subscriptions/{id}":{"delete":{"summary":"Cancela uma assinatura através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da assinatura a ser cancelada.","type":"integer","format":"int32","required":true},{"in":"query","name":"cancel_bills","description":"Indica se faturas pendentes da assinatura também devem ser canceladas. Default: true","type":"Boolean","default":true,"required":false},{"in":"query","name":"comments","description":"Comentários opcionais sobre o cancelamento.","type":"string","required":false}],"responses":{"200":{"description":"Assinatura cancelada com sucesso.","schema":{"$ref":"#/definitions/Subscription"}},"404":{"description":"Assinatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"deleteV1SubscriptionsId"},"put":{"summary":"Atualiza uma assinatura existente.","description":"Utilize este método para alterar os atributos de uma assinatura existente.\n\n#### Reagendamento da data de cobrança\nA data de cobrança da assinatura pode ser atualizada através dos parâmetros `billing_trigger_type` e `billing_trigger_day`.\n\nApós a atualização, a plataforma irá retornar a próxima data de cobrança calculada no atributo `next_billing_at`. Se esta data for igual ou anterior ao dia corrente, você poderá gerar uma fatura manualmente usando o método `POST /periods/{id}/bill`. A plataforma não irá emitir faturas retroativas automaticamente.\n\nPor motivos de retrocompatibilidade, a atualização da data de cobrança diretamente através do parâmetro `next_billing_at` ainda é possível, porém não recomendável.\n\n#### Desvincular perfil de pagamento\nPara desvincular um perfil de pagamento de uma assinatura sem vincular outro perfil, envie:\n\n\n```\n{\n  \"payment_profile\": {\n    \"id\": null\n  }\n}\n```\n\n#### Itens da assinatura\nPara atualizar os itens da assinatura, utilize o serviço `product_items`.\n\n\n#### Participantes da assinatura\n\nAs informações abaixo são a respeito do Split de pagamentos. Para entender mais sobre o Split e como ele funciona na gestão de recorrências, consulte nossa documentação detalhada sobre essa funcionalidade [aqui](https://atendimento.vindi.com.br/hc/pt-br/articles/9352403097243-O-que-%C3%A9-split-na-recorr%C3%AAncia)\n\nÉ possível adicionar, remover e atualizar o valor de repasse de um participante na assinatura. Cada ação requer uma estrutura diferente de parâmetros. Sendo assim, a estrutura de `subscription_affiliates` tem os seguintes parâmetros como base:\n\n\n```\n{\n    \"subscription_affiliates\": [\n        {\n            \"id\": 0,\n            \"affiliate_id\": 0,\n            \"amount\": 0,\n            \"amount_type\": 0,\n            \"status\": \"string\",\n            \"remove\": true\n        }\n    ]\n}\n```\n\n\nPara `adicionar` um novo participante na assinatura, devem ser enviados os parâmetros: `affiliate_id`, `amount` `amount_type` `status: active`.\n\nPara `remover` um participante da assinatura, devem ser enviados os parâmetros: `ID`, `affiliate_id`, `amount_type`, `remove`.\n\nPara `atualizar o valor` de um participante da assinatura, devem ser enviados os parâmetros: `ID`, `affiliate_id`, `amount` `amount_type`, `status: active`.\n\nObs: A estrutura deve seguir o exemplo acima, apenas realizando a alteração com os parâmetros descritos conforme a ação que deseja realizar.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da assinatura que deverá ser atualizada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Subscriptions"}}],"responses":{"200":{"description":"Assinatura atualizada com sucesso.","schema":{"$ref":"#/definitions/Subscription"}},"404":{"description":"Assinatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"putV1SubscriptionsId"},"get":{"summary":"Retorna uma assinatura específica através do ID.","description":"A assinatura é uma das entidades principais da plataforma e representa a relação entre um plano e um cliente. É a partir dela que faturas, cobranças e períodos são gerados.\n\n#### Períodos\nToda assinatura possui obrigatoriamente um ou mais períodos de recorrência. Verifique a documentação do método `GET subscriptions/{id}/periods` para mais detalhes. Os períodos são gerados automaticamente pela plataforma.\n\n#### Status\n\n|Status|Descrição|\n|------|---------|\n|`active`| Assinatura ativa. O atributo `current_period` irá obrigatoriamente conter os dados do período atual. |\n|`future`| Assinatura programada para uma data no futuro. Verifique o atributo `start_at`. |\n|`canceled`| Assinatura cancelada. |\n|`expired` | Assinatura encerrada. Este status ocorre apenas quando a assinatura possui duração limitada. Verifique o atributo `billing_cycles`. |\n\n#### Herança de atributos\nTodos os atributos relacionados à periodicidade da assinatura e precificação dos produtos são herdados no momento da criação e não são atualizados automaticamente quando o plano de origem é alterado. Este comportamento existe para permitir que assinaturas usando mesmo plano possam utilizar condições de precificação diferentes. Ainda assim você pode realizar alterações em massa utilizando a API.\n\n#### Descontos\nUma lista de descontos ativos será retornada no atributo `discounts` do objeto `product_item`. Caso você crie uma assinatura com cobrança imediata e um desconto temporário (`cycles: 1`), o mesmo será aplicado logo na primeira fatura e portanto não será mais considerado um desconto ativo.","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da assinatura que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Assinatura encontrada.","schema":{"$ref":"#/definitions/Subscription"}},"404":{"description":"Assinatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"getV1SubscriptionsId"}},"/v1/subscriptions/{id}/renew":{"post":{"summary":"Renova uma assinatura existente.","description":"O processo de renovação de assinaturas é automático. Utilize esse método para adiantar a renovação de uma assinatura.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da assinatura que deverá ser renovada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Assinatura renovada com sucesso.","schema":{"$ref":"#/definitions/Subscription"}},"404":{"description":"Assinatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"postV1SubscriptionsIdRenew"}},"/v1/subscriptions":{"post":{"summary":"Cria uma nova assinatura.","description":"Este método irá criar uma assinatura e obrigatoriamente retornar o objeto `subscription`. Se os parâmetros do plano indicarem uma cobrança imediata, o retorno da mesma requisição também irá conter os detalhes da fatura emitida, representada pelo objeto `bill`. Dentro deste objeto você poderá encontrar informações mais detalhadas sobre o processamento da transação (`last_transaction`).\n\n#### Exemplo de requisição\n\n```\n  {\n    \"plan_id\": 12,\n    \"customer_id\": 142,\n    \"payment_method_code\": \"credit_card\",\n    \"product_items\": [\n      { \"product_id\": 14 }\n    ]\n  }\n```\n\nPara mais detalhes e possibilidades de customização, consulte abaixo a seção **Parâmetros**.\n\n#### Método de pagamento\n\nPara uma lista dos métodos de pagamento disponíveis e seus respectivos códigos, consulte o serviço `GET payment_methods`.\n\nA plataforma tomará uma ação diferente dependendo do método de pagamento informado através do parâmetro `payment_method_code`. Caso o método exija, por exemplo, os dados do cartão de crédito do cliente, a plataforma irá verificar se o cliente em questão possui um cartão válido. Se possuir, uma tentativa de cobrança será efetuada. Se não possuir, um e-mail será enviado ao cliente solicitando seus dados de pagamento.\n\nCaso a forma de pagamento não exija nenhum dado adicional, um e-mail será enviado ao cliente. Boletos bancários possuem exatamente este comportamento.\n\n#### Produtos da assinatura\n\nPor padrão, a lista de itens da nova assinatura herdará as configurações de itens do plano informado via `plan_id`.\n\nCaso seja necessário, também é possível customizar esta lista de itens no momento da criação da assinatura através do array `product_items`. Através deste array de objetos é possível definir quais serão os produtos (`product_id`), quantidades (`quantity`) e o número de períodos (`cycles`) onde cada produto deverá será aplicado. Este atributo é especialmente útil para definir condições específicas que fogem das condições normais de precificação que você definiu no plano.\n\n#### Customização da precificação\n\nCaso o atributo `pricing_schema` não seja informado no `product_item`, a plataforma irá assumir a precificação padrão do produto. Se quiser customizar a precificação exclusivamente para esta assinatura, é possível informar o atributo `pricing_schema` com os parâmetros descritos abaixo. Mais detalhes sobre a precificação de produtos podem ser encontrados [neste artigo](http://atendimento.vindi.com.br/hc/pt-br/articles/203303380).\n\n#### Descontos\n\nCada produto da assinatura poderá receber um ou mais descontos que serão utilizados no cálculo da geração das faturas. Informe o atributo `discounts` para `product_item`. Caso mais de um desconto seja informado para o mesmo produto, os valores serão sempre calculados a partir do valor inicial.\n\n#### Tratamento de assinaturas com pagamentos rejeitados\n\nConforme mencionado anteriormente, a plataforma irá retornar a fatura gerada (`bill`) caso a assinatura possua uma cobrança imediata. Se este retorno possuir uma fatura pendente (`\"status\": \"pending\"`) e uma transação rejeitada, você terá as seguintes opções:\n\n- **Manter a assinatura ativa** e aguardar a retentativa automática da plataforma na data indicada pelo atributo `next_attempt`.\n- **Efetuar uma nova tentativa** de cobrança através do método `POST /charges/{id}/charge`. Opcionalmente você poderá informar um novo perfil de pagamento.\n- **Cancelar a assinatura e a fatura pendente** através do método `DELETE /subscriptions/{id}?cancel_bills=true`.\n- **Enviar um e-mail** com um link para a tela de pagamento da fatura. Este e-mail poderá ser enviado automaticamente pelas notificações da plataforma (cobrança rejeitada) ou se preferir, manualmente através do seu próprio backend. Neste caso, use o endereço contido no atributo `url` do objeto `bill`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Subscriptions"}}],"responses":{"201":{"description":"Assinatura criada com sucesso.","schema":{"$ref":"#/definitions/Subscription::Response::Create"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"postV1Subscriptions"},"get":{"summary":"Retorna uma lista de assinaturas.","description":"Utilize este método para listar as assinaturas associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003estatus\u003c/code\u003e,\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003einterval\u003c/code\u003e, \u003ccode\u003einterval_count\u003c/code\u003e, \u003ccode\u003ebilling_trigger_day\u003c/code\u003e, \u003ccode\u003ebilling_trigger_type\u003c/code\u003e, \u003ccode\u003ebilling_cycles\u003c/code\u003e, \u003ccode\u003eplan_id\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003estart_at\u003c/code\u003e, \u003ccode\u003ecancel_at\u003c/code\u003e, \u003ccode\u003eoverdue_since\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e, \u003ccode\u003eupdated_at\u003c/code\u003e e \u003ccode\u003eend_at\u003c/code\u003e.\n\n#### Inadimplência\nAlém dos filtros acima, a busca por assinaturas adimplentes ou inadimplentes pode ser realizada através do atributo `overdue_since` no parâmetro `query`. Exemplos:\n\n- Assinaturas adimplentes: `overdue_since = null`\n- Assinaturas inadimplentes: `overdue_since != null`\n- Assinaturas inadimplentes há mais de n dias: `overdue_since \u003c 2016-03-15`\n\n#### Itens da assinatura\n\nUma assinatura é composta de vários itens representados no array `product_items`. Este endpoint lista apenas os 25 primeiros itens de cada assinatura. Caso queira listar mais itens de uma assinatura, utilize o método da API `GET /subscriptions/{id}/product_items`.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","code","installments","customer_id","interval","interval_count","billing_trigger_day","billing_trigger_type","billing_cycles","plan_id","payment_method_id","start_at","cancel_at","overdue_since","created_at","updated_at","end_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Subscription"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"getV1Subscriptions"}},"/v1/subscriptions/{id}/product_items":{"get":{"summary":"Retorna os itens de uma assinatura através do seu ID.","description":"Utilize este método para listar os itens associados a uma assinatura. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination).\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"path","name":"id","description":"ID da assinatura cujos itens deverão ser retornados.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Itens encontrados.","schema":{"type":"array","items":{"$ref":"#/definitions/ProductItem"}}},"404":{"description":"Itens não encontrados.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["subscriptions"],"operationId":"getV1SubscriptionsIdProductItems"}},"/v1/product_items/{id}":{"delete":{"summary":"Remove um item através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do item que deverá ser removido.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Item removido com sucesso.","schema":{"$ref":"#/definitions/ProductItem"}},"404":{"description":"Item não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["product_items"],"operationId":"deleteV1ProductItemsId"},"put":{"summary":"Atualiza um item existente.","description":"É possível atualizar um item em uma assinatura existente, porém isso não causará nenhum reflexo imediato nas faturas já emitidas. Alterações em um item serão aplicadas apenas na próxima fatura gerada, porém de qualquer forma é possível cancelar e reemitir uma fatura já gerada.\n\n#### Precificação\nInforme o parâmetro `pricing_schema` apenas se quiser alterar a precificação atual do item. Consulte este [artigo](http://atendimento.vindi.com.br/hc/pt-br/articles/203303380) para mais informações sobre o cálculo da precificação.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do item que deverá ser atualizado.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1ProductItems"}}],"responses":{"200":{"description":"Item atualizado com sucesso.","schema":{"$ref":"#/definitions/ProductItem"}},"404":{"description":"Item não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["product_items"],"operationId":"putV1ProductItemsId"},"get":{"summary":"Retorna um item da assinatura específico através do ID.","description":"Uma assinatura (`subscription`) é composta de um ou mais `product_items`, que representam os itens da assinatura que serão usados para criar as faturas (`bill`) de cada período (`period`).\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do produto que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Item encontrado.","schema":{"$ref":"#/definitions/ProductItem"}},"404":{"description":"Item não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["product_items"],"operationId":"getV1ProductItemsId"}},"/v1/product_items":{"post":{"summary":"Cadastra um novo item em uma assinatura existente.","description":"Novos itens serão aplicados apenas em novas faturas. Se desejar incluir o novo item em uma fatura existente você deverá cancelar a fatura em questão e efetuar a reemissão.\n\n#### Precificação\nInforme o parâmetro `pricing_schema` apenas se quiser customizar a precificação para o novo item. Consulte este [artigo](http://atendimento.vindi.com.br/hc/pt-br/articles/203303380) para mais informações sobre o cálculo da precificação.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ProductItems"}}],"responses":{"201":{"description":"Item cadastrado com sucesso.","schema":{"$ref":"#/definitions/ProductItem"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["product_items"],"operationId":"postV1ProductItems"}},"/v1/periods/{id}":{"put":{"summary":"Atualiza um período existente.","description":"Atualiza um período existente.\n\n#### Data de término\nA duração de um período pode ser atualizada modificando sua data de término. Esta atualização é possível apenas no último período de uma assinatura. Períodos subsequentes desta assinatura serão calculados conforme a nova data, respeitando o intervalo original.\n\n#### Data de cobrança\nAtravés deste método também é possível atualizar a data de cobrança de um período, porém a plataforma não irá realizar cobranças retroativas automaticamente. Caso a atualização seja para uma data igual ou anterior ao dia de hoje, será necessário forçar a cobrança usando `POST /periods/{id}/bill`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do período.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Periods"}}],"responses":{"200":{"description":"Período atualizado com sucesso.","schema":{"$ref":"#/definitions/Period"}},"404":{"description":"Período não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["periods"],"operationId":"putV1PeriodsId"},"get":{"summary":"Retorna um período específico através do ID.","description":"Uma assinatura deve possuir obrigatoriamente um ou mais períodos, que são gerados automaticamente conforme a configuração de cobrança e periodicidade da assinatura. Em uma assinatura baseada em um plano mensal, cada período terá a duração de aproximadamente 30 dias.\n\n#### Registros de utilização\nTodo período deverá possuir um ou mais registros de utilização. A fatura do período será gerada a partir destes registros de utilização.\n\nPara produtos configurados com preço fixo ou preço por quantidade, a plataforma irá criar automaticamente um registro de utilização conforme a quantidade indicada na assinatura. Para produtos com preços baseados no volume, nenhum registro será criado automaticamente e o período aguardará obrigatoriamente a informação do registro de utilização. A inclusão do registro pode ser feita através do painel de administração ou pela API.\n\n#### Fatura\nNormalmente um período possuirá uma única fatura que será gerada automaticamente na data `billing_at`, porém em casos especiais um período poderá possuir mais de uma fatura.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do período que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Período encontrado.","schema":{"$ref":"#/definitions/Period"}},"404":{"description":"Período não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["periods"],"operationId":"getV1PeriodsId"}},"/v1/periods/{id}/bill":{"post":{"summary":"Emite uma nova fatura baseada em um período.","description":"Há 2 casos onde pode ser necessário gerar uma nova fatura manualmente a partir de um período:\n\n1. Gerar uma fatura que não foi emitida automaticamente por falta de informações de registro de uso;\n2. Gerar uma fatura adicional para um período.\n\nA plataforma Vindi tenta gerar automaticamente uma nova fatura na data especificada no atributo `billing_at` do período utilizando todos os registros de utilização não faturados até então. A nova fatura é gerada apenas se todos os itens ativos da assinatura possuírem ao menos um registro de utilização, mesmo que algum deles possua o campo `quantity` explicitamente igual a zero.\n\nEste comportamento é necessário para evitar a emissão de faturas que não receberam registros de utilização, seja por esquecimento do operador do sistema ou por algum tipo de falha na transmissão dessa informação. Para verificar esses períodos que não foram faturados, consulte o relatório \"Períodos não faturados\" e pesquise pela data da cobrança programada.\n\n#### Exemplo\nSuponha uma assinatura com a cobrança programada para o último dia do período contendo dois produtos:\n\n```\nMensalidade: Preço fixo - R$ 100,00\nHoras de suporte: Preço variável por volume - R$ 15,00/hora\n```\nO primeiro período será criado com um único registro de utilização com quantidade igual a 1 representando o produto \"Mensalidade\". A plataforma espera que a quantidade de \"Horas de suporte\" seja informada via API ou pelo operador do sistema. Se isto não acontecer até a data de cobrança do período, a plataforma **não irá gerar a fatura automaticamente**. Neste caso espera-se que a fatura seja gerada a partir do painel de administração ou deste método via API.\n\nComo mencionado acima, também é possível gerar uma fatura adicional incluindo registros de uso que ainda não foram faturados. Isso pode acontecer quando você deseja incluir alguma cobrança adicional no período e faz questão de manter a referência do período.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do período onde a fatura será gerada.","type":"integer","format":"int32","required":true}],"responses":{"201":{"description":"Fatura gerada com sucesso.","schema":{"$ref":"#/definitions/Period"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["periods"],"operationId":"postV1PeriodsIdBill"}},"/v1/periods/{id}/usages":{"get":{"summary":"Retorna uma lista de registros de utilização para um período específico.","description":"Utilize este método para listar os registros de utilização associados ao período desejado. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination).\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"path","name":"id","description":"ID do período que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Período encontrado.","schema":{"type":"array","items":{"$ref":"#/definitions/Usage"}}},"404":{"description":"Período não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["periods"],"operationId":"getV1PeriodsIdUsages"}},"/v1/periods":{"get":{"summary":"Retorna uma lista de períodos.","description":"Utilize este método para listar os períodos associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ebilling_at\u003c/code\u003e, \u003ccode\u003esubscription_id\u003c/code\u003e, \u003ccode\u003estart_at\u003c/code\u003e, \u003ccode\u003eend_at\u003c/code\u003e, \u003ccode\u003ecycle\u003c/code\u003e, \u003ccode\u003eduration\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","billing_at","subscription_id","start_at","end_at","cycle","duration","created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Period::List"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["periods"],"operationId":"getV1Periods"}},"/v1/bills/{id}":{"delete":{"summary":"Cancela uma fatura através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da fatura a ser cancelada.","type":"integer","format":"int32","required":true},{"in":"query","name":"comments","description":"Comentários opcionais sobre o cancelamento.","type":"string","required":false}],"responses":{"200":{"description":"Fatura cancelada com sucesso.","schema":{"$ref":"#/definitions/Bill"}},"404":{"description":"Fatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"deleteV1BillsId"},"put":{"summary":"Atualiza uma fatura existente.","description":"Utilize este método para alterar os atributos de uma fatura existente.\n\n#### Reagendamento da cobrança agendada\nAtravés do atributo `billing_at` é possível atualizar a data da cobrança uma fatura agendada (`status=scheduled`) para qualquer outra data no futuro. Esteja ciente que este método não permite o reagendamento para hoje. Se desejar antecipar imediatamente a cobrança uma fatura agendada, utilize o método `POST /bills/{id}/charge`.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da fatura que deverá ser atualizada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Bills"}}],"responses":{"200":{"description":"Fatura atualizada com sucesso.","schema":{"$ref":"#/definitions/Bill"}},"404":{"description":"Fatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"putV1BillsId"},"get":{"summary":"Retorna uma fatura específica através do ID.","description":"A fatura totaliza, em valores financeiros, mercadorias ou serviços que serão cobrados do cliente final. Faturas podem ser classificadas em dois tipos:\n\n1. **Faturas provenientes de assinaturas**: São as faturas geradas a partir de assinaturas e seus respectivos períodos.\n2. **Faturas avulsas**: Faturas que não possuem qualquer relação com uma assinatura.\n\n#### Faturas provenientes de assinaturas\nPodem ser geradas de duas formas diferentes:\n\n1. **Automaticamente** no dia programado para cobrança através do atributo `billing_at` do período (apenas se este cumprir com os requisitos de faturamento automático).\n2. **Manualmente** através do painel de administração ou pelo método da API `POST /periods/{id}/bill`.\n\n#### Aprovação de faturas\n\nAo menos que seja especificado nas configurações da plataforma, toda fatura é gerada com o status \"Aguardando aprovação\" (`review`). Este status serve para validar os valores que serão enviados e cobrados do cliente final. A fatura será cobrada somente após a aprovação, que pode ser feita manualmente através do painel de administração ou do método da API `POST /bills/{id}/approve`.\n\n#### Itens da fatura\n\nUma fatura é composta de vários itens representados no array `bill_items`. Cada item possui um valor e um produto associado. A soma de todos os itens é igual ao total da fatura. A única exceção para esta regra é no caso da aplicação de movimentos adicionais de crédito ou débito.\n\n#### Descontos\n\nUm desconto será representado por um `bill_item` com `amount` negativo e um objeto `discount` associado. Apenas faturas de assinaturas possuem descontos. Faturas avulsas devem ser geradas com seu valor final.\n\n#### Cobranças\n\nO ato da aprovação da fatura, seja ele automático ou manual, irá gerar um objeto do tipo cobrança (`charge`). Este objeto é a representação da cobrança enviada ao cliente e controla, entre outras coisas, vencimento, notificações automáticas e número de retentativas. Normalmente uma fatura irá conter uma única cobrança, porém a plataforma suporta múltiplas cobranças para uma mesma fatura.","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da fatura que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Fatura encontrada.","schema":{"$ref":"#/definitions/Bill"}},"404":{"description":"Fatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"getV1BillsId"}},"/v1/bills/{id}/invoice":{"post":{"summary":"Gera notas fiscais de uma fatura através do ID.","description":"Utilize esta operação para gerar notas fiscais a partir de uma fatura existente. Para isso é necessário que exista uma integração do tipo nota fiscal ativada e a fatura ainda não possua nenhuma nota fiscal gerada.\n\nMúltiplas notas fiscais poderão ser geradas caso você esteja usando configurações com esta finalidade, como por exemplo, a [nota fiscal fracionada](https://atendimento.vindi.com.br/hc/pt-br/articles/115003695667-Nota-fiscal-fracionada).\n\nCaso seja necessário emitir notas fiscais avulsas com configurações específicas, utilize o método `POST /invoices`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da fatura que irá gerar as notas fiscais.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Notas fiscais geradas com sucesso.","schema":{"$ref":"#/definitions/Invoice"}},"404":{"description":"Fatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"postV1BillsIdInvoice"}},"/v1/bills/{id}/charge":{"post":{"summary":"Antecipa imediatamente a cobrança de uma fatura através do ID.","description":"Utilize este método para antecipar imediatamente a cobrança de uma fatura agendada (`status=scheduled`) ou então para cobrar um saldo devedor. Uma nova cobrança será emitida automaticamente.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da fatura que será antecipada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1BillsIdCharge"}}],"responses":{"200":{"description":"Fatura antecipada com sucesso.","schema":{"$ref":"#/definitions/Bill"}},"404":{"description":"Fatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"postV1BillsIdCharge"}},"/v1/bills/{id}/approve":{"post":{"summary":"Aprova uma fatura através do ID.","description":"Ao aprovar a fatura, a cobrança será gerada e processada dependendo do método de pagamento escolhido. Apenas faturas com o status `review` podem ser aprovadas.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da fatura que será aprovada.","type":"integer","format":"int32","required":true}],"responses":{"201":{"description":"Fatura aprovada com sucesso.","schema":{"$ref":"#/definitions/Bill"}},"404":{"description":"Fatura não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"postV1BillsIdApprove"}},"/v1/bills":{"post":{"summary":"Cria uma nova fatura avulsa.","description":"Faturas avulsas são independentes de assinaturas e podem ser usadas para cobrar qualquer tipo de valor não recorrente.\n\nTodas as faturas seguirão as configurações de retentativa e notificações previamente configuradas na plataforma.\n\n#### Exemplo\n\nA maioria dos parâmetros deste método são opcionais. O exemplo abaixo efetua a emissão de uma fatura avulsa usando apenas os atributos obrigatórios:\n\n\n```\n{\n  \"customer_id\": 28,\n  \"payment_method_code\": \"bank_slip\",\n  \"bill_items\": [\n    {\n      \"product_id\": 14,\n      \"amount\": 100\n    }\n  ]\n}\n```\n\nRecomendamos que você implemente apenas estes parâmetros obrigatórios e adicione os opcionais a medida que a necessidade sugir. Normalmente o comportamento padrão da plataforma é suficiente para a maioria dos casos de uso.\n\n#### Lista de produtos\n\nSua fatura avulsa deve conter no mínimo um item na lista `bill_items`. Você deve referenciar o produto através do parâmetro `product_id` ou `product_code`.\n\nDiferente das faturas geradas a partir de assinaturas, o valor dos itens das faturas avulsas pode ser informado através do parâmetro `amount` dentro da lista `bill_items`.\n\nApesar do `bill_item` suportar um esquema de precificação (`pricing_schema`) com quantidade (`quantity`), recomendamos utilizar apenas o parâmetro `amount` para evitar complexidade desnecessária no desenvolvimento. Se `pricing_schema`, `quantity` e `amount` forem informados ao mesmo tempo, garanta que todos sejam mutuamente válidos.\n\n#### Método de pagamento\n\nÉ obrigatório informar o código do método de pagamento para a geração da fatura. Caso o método escolhido seja cartão de crédito, por exemplo, a plataforma irá tentar efetuar a cobrança com o cartão já cadastrado para o respectivo cliente. Caso nenhum cartão esteja cadastrado, a plataforma enviará por padrão um e-mail automático solicitando os dados de pagamento.\n\nSe preferir, você ainda poderá efetuar a captura dos dados de pagamento de duas outras formas diferentes:\n\n- Capture os dados em uma página própria (obrigatoriamente com HTTPS) e informe-os para a Vindi através do método da API `POST payment_profiles` antes de criar a fatura;\n- Ou então redirecione o cliente para o parâmetro `url` da fatura recém-criada, onde ele poderá imprimir o boleto ou inserir as informações de pagamento dentro do ambiente seguro da Vindi.\n\n#### IP do comprador\n\nOpcionalmente, informe o parâmetro `customer_ip` dentro do objeto `customer` com o endereço IPv4 do comprador. Este valor será utilizado para análise de antifraude junto ao gateway de pagamento.\n\n```\n{\n  \"customer\": {\n    \"customer_ip\": \"192.168.1.1\"\n  }\n}\n```\n\n#### Condição de pagamento\n\nPor padrão, a condição de pagamento configurada no método de pagamento será utilizada para emitir a cobrança da fatura avulsa.\n\nSe desejar customizar a condição para uma fatura específica, informe o parâmetro `payment_condition`.\n\nCaso você receba um erro no atributo `payment_condition` informando que o mesmo é inválido, verifique se os dados de data de vencimento `due_at`, data de agendamento `billing_at` e desconto por pontualidade `payment_condition.payment_condition_discounts.days_before_due` estão válidos. O valor da data do limite de desconto não pode ser retroativa, sendo assim, é possível que o parâmetro `payment_condition` fique inválido mesmo que não tenha sido informado, visto que as informações do método de pagamento escolhido serão utilizadas por padrão.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Bills"}}],"responses":{"201":{"description":"Fatura avulsa criada com sucesso.","schema":{"$ref":"#/definitions/Bill"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"postV1Bills"},"get":{"summary":"Retorna uma lista de faturas.","description":"Utilize este método para listar as faturas associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003eperiod_id\u003c/code\u003e, \u003ccode\u003esubscription_id\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003eamount\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003eseen_at\u003c/code\u003e, \u003ccode\u003edue_at\u003c/code\u003e, \u003ccode\u003ebilling_at\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n\n#### Itens da fatura\n\nUma fatura é composta de vários itens representados no array `bill_items`. Este endpoint lista apenas os 25 primeiros itens de cada fatura. Caso queira listar mais itens de uma fatura, utilize o método da API `GET /bills/{id}/bill_items`.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","code","installments","period_id","subscription_id","customer_id","amount","status","payment_method_id","seen_at","due_at","billing_at","created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Bill"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"getV1Bills"}},"/v1/bills/{id}/bill_items":{"get":{"summary":"Retorna os itens de fatura através de seu ID.","description":"Utilize este método para listar os itens associados a uma fatura. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination).\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"path","name":"id","description":"ID da fatura cujos itens deverão ser retornados.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Itens encontrados.","schema":{"type":"array","items":{"$ref":"#/definitions/BillItem"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bills"],"operationId":"getV1BillsIdBillItems"}},"/v1/bill_items/{id}":{"get":{"summary":"Retorna um item específico através do ID.","description":"Além das informações básicas sobre o item da fatura, através deste método é possível obter todos os registros de utilização associados ao item.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do item da fatura que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Item da fatura encontrado.","schema":{"$ref":"#/definitions/BillItem::IncludingUsages"}},"404":{"description":"Item da fatura não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["bill_items"],"operationId":"getV1BillItemsId"}},"/v1/charges/{id}/capture":{"post":{"summary":"Captura manualmente uma cobrança previamente autorizada.","description":"Este método permite executar a captura de uma cobrança previamente autorizada através da criação de uma nova transação de captura.\nÉ importante verificar se o gateway utilizado está configurado para aceitar capturas manuais. Verifique também o prazo máximo de captura permitido pela adquirente utilizada.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da cobrança que será capturada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Tentativa de captura efetuada com sucesso.","schema":{"$ref":"#/definitions/Charge"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"postV1ChargesIdCapture"}},"/v1/charges/{id}/fraud_review":{"post":{"summary":"Revisa manualmente uma cobrança suspeita de fraude.","description":"Utilize este método para aprovar ou rejeitar uma cobrança suspeita de fraude (`status=fraud_review`).\n\nO comportamento desta operação irá depender da configuração da integração antifraude:\n\n#### Análise antes da autorização\nNeste caso a análise ocorre antes da comunicação com a adquirente.\n\n- Aprovar (`approve`): A aprovação de uma suspeita de fraude irá disparar a tentativa de aprovação da transação junto à adquirente. Lembre-se que esta transação pode ser aprovada ou aprovada pela adquirente.\n- Rejeitar (`reject`): A rejeição atualizará o status da transação para rejeitado (`rejected`) com uma mensagem de erro genérica. Nenhuma tentativa é realizada na adquirente.\n\n#### Análise depois da autorização\nA análise ocorre após a autorização da adquirente.\n\n- Aprovar (`approve`): A plataforma Vindi executa a operação de captura na adquirente.\n- Rejeitar (`reject`): A rejeição dispara a operação de cancelamento da autorização na adquirente e gera uma transação de captura com o status `rejected`.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da cobrança que será revisada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ChargesIdFraudReview"}}],"responses":{"200":{"description":"Cobrança revisada com sucesso.","schema":{"$ref":"#/definitions/Charge"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"postV1ChargesIdFraudReview"}},"/v1/charges/{id}":{"delete":{"summary":"Cancela uma cobrança existente.","description":"Utilize este método para efetuar o cancelamento de uma cobrança aguardando pagamento.\n\nApós a operação de cancelamento, a cobrança assumirá `status=canceled`.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da cobrança que será cancelada.","type":"integer","format":"int32","required":true},{"in":"query","name":"comments","description":"Comentários opcionais sobre o cancelamento.","type":"string","required":false},{"in":"query","name":"ignore_transaction_errors","description":"Indica se a operação deverá ser executada mesmo se houver falha na comunicação com a instituição financeira. Utilize apenas se a cobrança já foi modificada fora da plataforma Vindi. O uso indevido pode causar inconsistências no estado da transação. Recomendamos não enviar este parâmetro durante a utilização normal da API.","type":"Boolean","required":false}],"responses":{"200":{"description":"Cancelamento efetuado com sucesso.","schema":{"$ref":"#/definitions/Charge"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"deleteV1ChargesId"},"put":{"summary":"Atualiza uma cobrança existente.","description":"Utilize este método para atualizar cobranças existentes.\n\n#### Alterar método de pagamento\n\nNão é possível alterar o método de pagamento de uma cobrança existente. Para realizar esta operação, reemita a cobrança informando um novo método de pagamento usando o endpoint `POST /charges/{id}/reissue`.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da cobrança que deverá ser atualizada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Charges"}}],"responses":{"200":{"description":"Cobrança atualizada com sucesso.","schema":{"$ref":"#/definitions/Charge"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"putV1ChargesId"},"get":{"summary":"Retorna uma cobrança específica através do ID.","description":"Cobranças representam o valor cobrado do cliente, o método de pagamento utilizado e o número de tentativas restantes.\n\n#### Impressão de boleto\nUtilize o atributo `print_url` para visualizar a url do boleto bancário.\n\nÉ possível definir a data de visualização do boleto informando o parâmetro `seen_at` via query string, seguindo o formato ISO 8601. Por exemplo `seen_at=2017-06-30`. Esta opção permite antecipar a impressão de uma cobrança usando uma data no futuro, pré-calculando a multa e os juros caso seja necessário.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da cobrança que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Cobrança encontrada.","schema":{"$ref":"#/definitions/Charge"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"getV1ChargesId"}},"/v1/charges/{id}/refund":{"post":{"summary":"Estorna uma cobrança existente.","description":"Utilize este método para efetuar o estorno (ou cancelamento) de uma cobrança já efetuada com sucesso. É importante observar que não é possível reverter um estorno realizado com sucesso.\n\nApós a operação de estorno, a cobrança assumirá `status=canceled`. O cancelamento da fatura associda é opcional e pode ser informado através da opção `cancel_bill` no corpo da requisição.\n\n#### Estorno total e parcial\n\nA operação de estorno pode ser realizada na totalidade do valor original ou parcialmente, caso seja necessário. É importante observar que nem todas as adquirentes suportam a modalidade de estorno parcial.\n\nPara efetuar o estorno total não é obrigatório informar o parâmetro `amount`.\n\n#### Retorno síncrono e assíncrono\n\nCaso o estorno retorne uma transação (`last_transaction`) contendo o atributo `status=success`, é possível considerar que a operação foi realizada com sucesso e o valor será creditado na fatura do cliente respeitando as regras da adquirente e do banco emissor. Chamamos esta operação de **estorno síncrono**.\n\nEm alguns casos também é possível que a plataforma retorne `status=waiting`. Isto significa que o estorno foi recebido com sucesso, porém ainda depende de um processamento adicional na adquirente. Esta operação é chamada de **estorno assíncrono**. Neste caso, você poderá optar pelo recebimento do webhook \"Cobrança estornada\" (`charge_refunded`) que será enviado assim que a adquirente emitir a confirmação de estorno. O recebimento da confirmação do estorno pode demorar entre alguns minutos até alguns dias.\n\n#### Estorno com afiliados\n\nA API de estorno permite tanto o estorno total quanto parcial de uma cobrança, com suporte a transações que envolvem afiliados (Split de pagamento).\n\n**Tipos de estorno**\n\nCaso seja necessário realizar um estorno de uma transação com Split, existem duas formas de operação:\n\n**Estorno total**: o valor integral da cobrança será estornado, e o `master`(Conta principal) será responsável por todo o valor. Neste caso, não é necessário informar afiliados no corpo da requisição.\n\n**Estorno parcial**: permite informar afiliados que participaram da transação. O estorno será aplicado sobre o saldo recebido por cada afiliado indicado.\n\nApenas é permitido estornar até o valor que o afiliado recebeu na transação.\n\nExemplo: se um afiliado recebeu R$ 10, o valor máximo possível de estorno para ele será R$ 10.\n\nAo realizar um estorno parcial, utilize o campo `affiliates` no corpo da requisição. O valor informado em `affiliate_refund` deve ser maior que zero e menor ou igual aos valores recebidos\n\nPara o envio de múltiplos participantes no estorno é da seguinte forma `\"affiliates\": [{\"affiliate_id\": \"ID do participante\", \"affiliate_refund\": \"1\"}, {\"affiliate_id\": \"ID do participante\", \"affiliate_refund\": \"1\"}, ...]`\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da cobrança que será estornada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ChargesIdRefund"}}],"responses":{"200":{"description":"Estorno emitido com sucesso.","schema":{"$ref":"#/definitions/ChargeWithAffiliate"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"postV1ChargesIdRefund"}},"/v1/charges/{id}/charge":{"post":{"summary":"Efetua uma nova tentativa em uma cobrança existente.","description":"A plataforma Vindi efetua retentativas automáticas de cobranças no intervalo configurado em cada método de pagamento. Você pode consultar a data da próxima tentativa no atributo `next_attempt` de cada cobrança. Ainda assim poderão haver casos onde seja necessário efetuar uma tentativa extraordinária, com ou sem um novo perfil de pagamento. Apenas cobranças no cartão de crédito e débito em conta poderão sofrer retentativas através deste método.\n\n#### Retentativa com o perfil existente\n\nSe desejar realizar uma retentativa com o perfil de pagamento atual do cliente, efetue o `POST` sem enviar qualquer informação adicional no corpo da requisição e especifique apenas o ID da cobrança existente.\n\n#### Retentativa com novo perfil de pagamento\n\nCaso seja possível obter os novos dados de pagamento, use este método para cadastrar o novo perfil de pagamento e efetuar a retentativa da cobrança, tudo em uma única requisição. Envie os dados do perfil de pagamento no corpo da requisição, seguindo os parâmetros descritos abaixo. O cadastro do perfil de pagamento também pode ser realizado através do método `POST /payment_profiles`.\n\n#### Cuidados\nAs tentativas automáticas da Vindi são calculadas pensando na proteção do seu contrato de adquirência e na proteção do cartão de crédito ou da conta corrente do seu cliente. Efetuar retentativas desnecessárias repetidamente pode acabar bloqueando o cartão de crédito do seu cliente ou comprometendo a integração com seu banco ou adquirente.\n\nUse este método exclusivamente para efetuar retentativas manuais em seu backend ou oferecer ao cliente uma tela para atualização das informações de pagamento. Nunca automatize os envio de retentativas.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do perfil de pagamento existente","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ChargesIdCharge"}}],"responses":{"201":{"description":"Tentativa efetuada.","schema":{"$ref":"#/definitions/Charge"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"postV1ChargesIdCharge"}},"/v1/charges/{id}/reissue":{"post":{"summary":"Reemite uma cobrança existente usando outro método de pagamento.","description":"Para alterar o método de pagamento de uma cobrança existente é necessário efetuar o processo de reemisão. Através deste serviço, a cobrança informada será cancelada e uma nova cobrança será gerada usando os atributos enviados.\n\n#### Parcelamento\nCaso a reemissão envolva parcelamento, atente-se ao número máximo de parcelas do método de pagamento desejado.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da cobrança que será reemitida.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ChargesIdReissue"}}],"responses":{"201":{"description":"Cobrança reemitida.","schema":{"$ref":"#/definitions/Charge"}},"404":{"description":"Recurso não encontrado: Cobrança","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"postV1ChargesIdReissue"}},"/v1/charges":{"get":{"summary":"Retorna uma lista de cobranças.","description":"Utilize este método para listar as cobranças associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ebill_id\u003c/code\u003e, \u003ccode\u003eamount\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003edue_at\u003c/code\u003e, \u003ccode\u003epaid_at\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003eattempt_count\u003c/code\u003e, \u003ccode\u003enext_attempt\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["created_at","updated_at","due_at","paid_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Charge"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["charges"],"operationId":"getV1Charges"}},"/v1/transactions/{id}":{"put":{"summary":"Atualiza uma transação existente.","description":"Utilize este método para atualizar o atributo \"Nosso número\" (`gateway_transaction_id`) em transações pendentes emitidas usando boleto bancário. Esta atualização é possível apenas caso o método de pagamento em questão não utilize a sequência autoincrementável da transação.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da transação que deverá ser atualizada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Transactions"}}],"responses":{"200":{"description":"Transação atualizada com sucesso.","schema":{"$ref":"#/definitions/Transaction"}},"404":{"description":"Transação não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["transactions"],"operationId":"putV1TransactionsId"},"get":{"summary":"Retorna uma transação específica através do ID.","description":"Transações representam a comunicação com instituições financeiras.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da transação que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Transação encontrada.","schema":{"$ref":"#/definitions/Transaction"}},"404":{"description":"Transação não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["transactions"],"operationId":"getV1TransactionsId"}},"/v1/transactions":{"post":{"summary":"Insere uma nova transação manual.","description":"Este método deve ser utilizado apenas para efetuar a baixa manual de cobranças pagas através de métodos que não são controlados pela plataforma Vindi, como por exemplo, dinheiro em espécie ou depósito em conta.\n\nQuando você utiliza a criação manual de transações, a plataforma Vindi considera que o valor em questão foi de fato **recebido**. Por este motivo, não use este método para conceder descontos, créditos ou abonos.\n\n#### Cálculo de multa e juros\n\nCaso a configuração do método de pagamento original da cobrança contenha multa e juros, tenha cuidado redobrado ao informar a data de pagamento correta através do atributo `paid_at`.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Transactions"}}],"responses":{"201":{"description":"Transação manual criada com sucesso.","schema":{"$ref":"#/definitions/Transaction"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["transactions"],"operationId":"postV1Transactions"},"get":{"summary":"Retorna uma lista de transações.","description":"Utilize este método para listar as transações associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003echarge_id\u003c/code\u003e, \u003ccode\u003egateway_id\u003c/code\u003e, \u003ccode\u003econnector\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003etransaction_type\u003c/code\u003e, \u003ccode\u003eamount\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003eimport_batch_id\u003c/code\u003e, \u003ccode\u003eexport_batch_id\u003c/code\u003e, \u003ccode\u003egateway_authorization\u003c/code\u003e, \u003ccode\u003egateway_transaction_id\u003c/code\u003e, \u003ccode\u003efraud_detector_score\u003c/code\u003e, \u003ccode\u003efraud_detector_status\u003c/code\u003e, \u003ccode\u003efraud_detector_id\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e, \u003ccode\u003eupdated_at\u003c/code\u003e e \u003ccode\u003egateway_response_code\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Transaction"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["transactions"],"operationId":"getV1Transactions"}},"/v1/transactions/recoveries":{"get":{"summary":"Retorna uma lista de transações de recuperação de inadimplência.","description":"Retorna uma lista de transações com recuperação de inadimplencia de um merchant\ndentro de um período específico\n","produces":["application/json"],"parameters":[{"in":"query","name":"start_on","description":"Data inicial das transações","type":"string","required":true},{"in":"query","name":"end_on","description":"Data final das transações","type":"string","required":true},{"in":"query","name":"name","description":"Nome do relatório para ser extraído","type":"string","required":true}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Transaction"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["transactions"],"operationId":"getV1TransactionsRecoveries"}},"/v1/payment_profiles/{id}":{"put":{"summary":"Atualiza um perfil de pagamento existente através do ID.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do perfil de pagamento que deverá ser atualizado.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1PaymentProfiles"}}],"responses":{"200":{"description":"Perfil de pagamento atualizado com sucesso.","schema":{"$ref":"#/definitions/PaymentProfile"}},"404":{"description":"Perfil de pagamento não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_profiles"],"operationId":"putV1PaymentProfilesId"},"delete":{"summary":"Inativa um perfil de pagamento existente através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do perfil de pagamento a ser inativado.","type":"integer","format":"int32","required":true},{"in":"query","name":"remove_permanently","description":"Indica se o perfil de pagamento será removido de forma permanente. Default: false","type":"Boolean","required":false}],"responses":{"200":{"description":"Perfil de pagamento cancelado com sucesso.","schema":{"$ref":"#/definitions/PaymentProfile"}},"404":{"description":"Perfil de pagamento não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_profiles"],"operationId":"deleteV1PaymentProfilesId"},"get":{"summary":"Retorna um perfil de pagamento específico através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do perfil de pagamento que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Perfil de pagamento encontrado.","schema":{"$ref":"#/definitions/PaymentProfile"}},"404":{"description":"Perfil de pagamento não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_profiles"],"operationId":"getV1PaymentProfilesId"}},"/v1/payment_profiles":{"post":{"summary":"Cadastra um novo perfil de pagamento para um cliente existente.","description":"O perfil de pagamento representa um cartão de crédito ou uma conta bancária armazenada na plataforma Vindi. Leia mais na [documentação](http://atendimento.vindi.com.br/hc/pt-br/articles/204406204-Perfil-de-pagamento).\n\n#### Exemplo de requisição para cartão de crédito\n```\n{\n  \"holder_name\": \"José da Silva\",\n  \"card_expiration\": \"12/2018\",\n  \"card_number\": \"5167454851671773\",\n  \"card_cvv\": \"123\",\n  \"payment_method_code\": \"credit_card\",\n  \"payment_company_code\": \"mastercard\",\n  \"customer_id\": 51\n}\n```\n\n#### Exemplo de requisição para dados bancários\n```\n{\n  \"holder_name\": \"José da Silva\",\n  \"registry_code\": \"27721264391\",\n  \"bank_branch\": \"0964\",\n  \"bank_account\": \"71233-1\",\n  \"payment_method_code\": \"bank_debit\",\n  \"payment_company_code\": \"itau\",\n  \"customer_id\": 51\n}\n```\n\n#### Bandeiras e bancos disponíveis\nPara uma lista completa de códigos de bancos e bandeiras suportadas pela sua conta, utilize o endpoint `GET /payment_methods` e verifique o atributo `payment_companies.code`.\n\n#### Detecção automática de bandeira\nCaso o parâmetro `payment_company_code` não seja informado, a plataforma irá tentar detectar a bandeira do cartão de crédito através do número informado. Este método não garante a detecção automática de bandeiras sem faixas de BIN/IIN definidas publicamente (Elo, Hipercard, Hiper, etc). Se você pretende utilizar cartões destas bandeiras, solicite a bandeira no seu formulário de pagamento e envie através do parâmetro `payment_company_code`.\n\nNo caso do débito em conta, `payment_company_code` é obrigatório.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PaymentProfiles"}}],"responses":{"201":{"description":"Perfil de pagamento cadastrado com sucesso.","schema":{"$ref":"#/definitions/PaymentProfile"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_profiles"],"operationId":"postV1PaymentProfiles"},"get":{"summary":"Retorna uma lista de perfis de pagamento.","description":"Utilize este método para listar perfis de pagamento associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Exemplo\nPara verificar se determinado cliente possui um cartão de crédito ativo, utilize os seguintes filtros no parâmetro `query`:\n\n```\ncustomer_id=[id do cliente] status=active type=PaymentProfile::CreditCard\n```\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ecard_number_first_six\u003c/code\u003e, \u003ccode\u003ecard_number_last_four\u003c/code\u003e, \u003ccode\u003ecard_expiration\u003c/code\u003e, \u003ccode\u003epayment_company_id\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003etype\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e, \u003ccode\u003eregistry_code\u003c/code\u003e, \u003ccode\u003ebank_account\u003c/code\u003e, \u003ccode\u003ebank_branch\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","customer_id","card_number_first_six","card_number_last_four","card_expiration","payment_company_id","payment_method_id","status","type","created_at","registry_code","bank_account","bank_branch","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/PaymentProfile"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_profiles"],"operationId":"getV1PaymentProfiles"}},"/v1/payment_profiles/{id}/verify":{"post":{"summary":"Verifica a validade de um perfil de pagamento existente através do ID.","description":"Este método permite verificar se um perfil de pagamento existente é válido na entidade emissora. Apenas o método de pagamento cartão de crédito suporta esta operação.\n\nUtilize esta função para validar um perfil de pagamento antes da criação de uma assinatura que não possua cobrança imediata. Este método é desnecessário para assinaturas com cobrança imediata.\n\n#### Funcionamento\nPreferencialmente a plataforma Vindi irá executar o método de validação fornecido nativamente pelas adquirentes. Caso este método não esteja disponível, a plataforma poderá realizar uma autorização seguida de um cancelamento.\n\n#### Resultado\nPara verificar o resultado da validação, verifique no retorno se `status=success`.\n\n#### Disponibilidade\nEsta funcionalidade estará disponível para testes enquanto sua conta Vindi estiver no modo trial. Para habilitar no modo produção, instale a extensão \"Transação de verificação\" acessando ***Configurações \u003e Extensões \u0026 Integrações*** no painel de administração da plataforma. Taxas adicionais por verificação poderão ser cobradas.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do perfil de pagamento que deverá ser verificado.","type":"integer","format":"int32","required":true}],"responses":{"201":{"description":"Ok. Transação de verificação realizada com sucesso.","schema":{"$ref":"#/definitions/Transaction"}},"404":{"description":"Perfil de pagamento não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["payment_profiles"],"operationId":"postV1PaymentProfilesIdVerify"}},"/v1/usages/{id}":{"delete":{"summary":"Remove um período de utilização através do ID.","description":"Somente é possível remover um registro de utilização que não está associado a uma fatura. Se o período já estiver faturado, será necessário cancelar a fatura antes de removê-lo.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do registro de utilização que deverá ser removido.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Registro de utilização removido com sucesso.","schema":{"$ref":"#/definitions/Usage"}},"404":{"description":"Registro de utilização não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["usages"],"operationId":"deleteV1UsagesId"}},"/v1/usages":{"post":{"summary":"Cria um novo registro de utilização.","description":"Para criar um novo registro de utilização em um período é necessário informar um dos produtos contidos na assinatura. Isso pode ser feito através do atributo `product_id` (ID do produto) ou `product_item_id` (ID do item da assinatura).\n\n  Ao remover um registro com sucesso, o próprio será retornado no corpo da resposta.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Usages"}}],"responses":{"201":{"description":"Registro de utilização criado com sucesso.","schema":{"$ref":"#/definitions/Usage"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["usages"],"operationId":"postV1Usages"}},"/v1/invoices/{id}":{"delete":{"summary":"Cancela uma nota fiscal através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da nota fiscal a ser cancelada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Nota fiscal cancelada com sucesso.","schema":{"$ref":"#/definitions/Invoice"}},"404":{"description":"Nota fiscal não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["invoices"],"operationId":"deleteV1InvoicesId"},"put":{"summary":"Atualiza uma nota fiscal existente.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da nota fiscal que deverá ser atualizada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Invoices"}}],"responses":{"200":{"description":"Nota fiscal atualizada com sucesso.","schema":{"$ref":"#/definitions/Invoice"}},"404":{"description":"Nota fiscal não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["invoices"],"operationId":"putV1InvoicesId"},"get":{"summary":"Retorna uma nota fiscal específica através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da nota fiscal que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Nota fiscal encontrada.","schema":{"$ref":"#/definitions/Invoice"}},"404":{"description":"Nota fiscal não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["invoices"],"operationId":"getV1InvoicesId"}},"/v1/invoices/{id}/retry":{"post":{"summary":"Efetua uma retentativa de envio de nota fiscal existente.","description":"Utilize esta função para reenviar notas fiscais que já foram geradas. Verifique o status da nota fiscal antes de utilizar este método e evite uma exportação duplicada indesejada.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da nota fiscal a ser reenviada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1InvoicesIdRetry"}}],"responses":{"200":{"description":"Nota fiscal agendada para envio.","schema":{"$ref":"#/definitions/Invoice"}},"404":{"description":"Nota fiscal não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["invoices"],"operationId":"postV1InvoicesIdRetry"}},"/v1/invoices":{"post":{"summary":"Emite uma nota fiscal avulsa.","description":"Para emitir notas fiscais você obrigatoriamente deve possuir uma integração habilitada com esta função.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Invoices"}}],"responses":{"201":{"description":"Nota fiscal gerada com sucesso.","schema":{"$ref":"#/definitions/Invoice"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["invoices"],"operationId":"postV1Invoices"},"get":{"summary":"Retorna uma lista de notas fiscais.","description":"Utilize este método para listar as notas fiscais associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ebill_id\u003c/code\u003e, \u003ccode\u003eintegration_id\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003eintegration_invoice_id\u003c/code\u003e, \u003ccode\u003eintegration_reference\u003c/code\u003e, \u003ccode\u003eissued_at\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eintegration_type\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","customer_id","bill_id","integration_id","status","integration_invoice_id","integration_reference","issued_at","created_at","integration_type"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"$ref":"#/definitions/Invoice"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["invoices"],"operationId":"getV1Invoices"}},"/v1/movements/{id}":{"delete":{"summary":"Remove um movimento financeiro pendente através de um ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do movimento que deverá ser removido.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Movimento financeiro removido com sucesso.","schema":{"$ref":"#/definitions/Movement"}},"404":{"description":"Movimento financeiro não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["movements"],"operationId":"deleteV1MovementsId"}},"/v1/movements":{"post":{"summary":"Cria um novo movimento financeiro de ajuste.","description":"Utilize este método para criar um movimento financeiro de ajuste (crédito).","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Movements"}}],"responses":{"201":{"description":"Movimento financeiro criado com sucesso.","schema":{"$ref":"#/definitions/Movement"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["movements"],"operationId":"postV1Movements"}},"/v1/messages":{"post":{"summary":"Envia uma nova mensagem.","description":"Este método permite enviar manualmente mensagens a partir de notificações existentes. Esteja ciente que as notificações desempenham sua função automaticamente e que este método deve ser usado apenas para reenviar mensagens que não chegaram ao destino por erros de cadastro ou recebimento.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Messages"}}],"responses":{"201":{"description":"Mensagem enviada com sucesso.","schema":{"$ref":"#/definitions/Message"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["messages"],"operationId":"postV1Messages"},"get":{"summary":"Retorna uma lista de mensagens.","description":"Utilize este método para listar as mensagens enviadas através da sua conta na plataforma Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003enotification_type\u003c/code\u003e, \u003ccode\u003enotification_id\u003c/code\u003e, \u003ccode\u003eseen_at\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003echarge_id\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003edelivered_at\u003c/code\u003e.\n  ","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","notification_type","notification_id","seen_at","customer_id","charge_id","created_at","delivered_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Message"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["messages"],"operationId":"getV1Messages"}},"/v1/messages/{id}":{"get":{"summary":"Retorna uma mensagem específica através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da mensagem que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Mensagem encontrada.","schema":{"$ref":"#/definitions/Message"}},"404":{"description":"Mensagem não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["messages"],"operationId":"getV1MessagesId"}},"/v1/export_batches/{id}/approve":{"post":{"summary":"Aprova um lote de exportação específico através do ID.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do Lote de exportação que deverá ser aprovado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Lote de exportação aprovado.","schema":{"$ref":"#/definitions/ExportBatch"}},"404":{"description":"Lote de exportação não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["export_batches"],"operationId":"postV1ExportBatchesIdApprove"}},"/v1/export_batches":{"get":{"summary":"Retorna uma lista de lotes de exportação.","description":"","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","status","payment_method_id","created_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/ExportBatch"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["export_batches"],"operationId":"getV1ExportBatches"},"post":{"summary":"Cria um novo lote de exportação.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ExportBatches"}}],"responses":{"201":{"description":"Arquivo de remessa gerado com sucesso.","schema":{"$ref":"#/definitions/ExportBatch"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["export_batches"],"operationId":"postV1ExportBatches"}},"/v1/export_batches/{id}":{"get":{"summary":"Retorna um lote de exportação específico através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da Lote de exportação que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Lote de exportação encontrado.","schema":{"$ref":"#/definitions/ExportBatch"}},"404":{"description":"Lote de exportação não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["export_batches"],"operationId":"getV1ExportBatchesId"}},"/v1/import_batches":{"post":{"summary":"Efetua upload de um novo lote de importação.","description":"Utilize este método para efetuar o upload de um arquivo de retorno de boleto bancário ou débito em conta.\n\n#### Content-Type\nEste é o único método da API Vindi que deve ser usado no modo [multipart](http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html) com o cabeçalho `Content-Type: multipart/form-data`. Consulte a documentação da sua biblioteca REST e não se esqueça de informar o código do método de pagamento através do parâmetro `payment_method_code`. Também informe o parâmetro `payment_company_code` no caso do débito em conta.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"formData","name":"payment_method_code","description":"Código do método de pagamento","type":"string","required":true},{"in":"formData","name":"payment_company_code","description":"Código da bandeira ou banco","type":"string","required":false},{"in":"formData","name":"batch","description":"Arquivo a ser importado","type":"file","required":true}],"responses":{"201":{"description":"Lote de importação cadastrado com sucesso.","schema":{"$ref":"#/definitions/ImportBatch"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["import_batches"],"operationId":"postV1ImportBatches"},"get":{"summary":"Retorna uma lista de lotes de importação.","description":"Utilize este método para listar os lotes de importação associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003ebatch_file_size\u003c/code\u003e, \u003ccode\u003ebatch_file_name\u003c/code\u003e, \u003ccode\u003ebatch_fingerprint\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"created_at","enum":["id","payment_method_id","batch_file_size","batch_file_name","batch_fingerprint","created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/ImportBatch"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["import_batches"],"operationId":"getV1ImportBatches"}},"/v1/import_batches/{id}":{"get":{"summary":"Retorna um lote de importação específico através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do lote de importação que deverá ser retornado.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Lote de importação encontrado.","schema":{"$ref":"#/definitions/ImportBatch"}},"404":{"description":"Lote de importação não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["import_batches"],"operationId":"getV1ImportBatchesId"}},"/v1/issues/{id}":{"put":{"summary":"Atualiza uma pendência existente através do ID.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da pendência que deverá ser atualizada.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Issues"}}],"responses":{"200":{"description":"Pendência atualizada com sucesso.","schema":{"$ref":"#/definitions/Issue"}},"404":{"description":"Pendência não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["issues"],"operationId":"putV1IssuesId"},"get":{"summary":"Retorna uma pendência específica através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da pendência que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Pendência encontrada.","schema":{"$ref":"#/definitions/Issue"}},"404":{"description":"Pendência não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["issues"],"operationId":"getV1IssuesId"}},"/v1/issues":{"get":{"summary":"Retorna uma lista de pendências.","description":"Utilize este método para listar as pendências associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003eitem_id\u003c/code\u003e, \u003ccode\u003eitem_type\u003c/code\u003e, \u003ccode\u003eissue_type\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n  ","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"id","enum":["id","status","item_id","item_type","issue_type","customer_id","created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Issue"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["issues"],"operationId":"getV1Issues"}},"/v1/notifications/{id}/notification_items/{notification_item_id}":{"delete":{"summary":"Remove um item da segmentação da notificação.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true},{"in":"path","name":"notification_item_id","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Item removido com sucesso.","schema":{"$ref":"#/definitions/NotificationItem"}},"404":{"description":"Item não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"deleteV1NotificationsIdNotificationItemsNotificationItemId"}},"/v1/notifications/{id}/notification_items":{"post":{"summary":"Cria um item para segmentação da notificação.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1NotificationsIdNotificationItems"}}],"responses":{"201":{"description":"Item criado com sucesso.","schema":{"$ref":"#/definitions/NotificationItem"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"postV1NotificationsIdNotificationItems"},"get":{"summary":"Retorna uma lista de items para segmentação da notificação.","description":"Lista de itens para segmentação da notificação. Recomendamos que mantenha esta lista vazia ao menos que precise necessariamente restringir o envio da notificação para um ou mais planos ou métodos de pagamento.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"path","name":"id","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/NotificationItem"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"getV1NotificationsIdNotificationItems"}},"/v1/notifications/{id}":{"delete":{"summary":"Remove uma notificação.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Notificação removida com sucesso.","schema":{"$ref":"#/definitions/Notification"}},"404":{"description":"Notificação não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"deleteV1NotificationsId"},"put":{"summary":"Atualiza uma notificação.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Notifications"}}],"responses":{"200":{"description":"Notificação atualizada com sucesso.","schema":{"$ref":"#/definitions/Notification"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"putV1NotificationsId"},"get":{"summary":"Retorna uma notificação através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Notificação encontrada.","schema":{"$ref":"#/definitions/Notification"}},"404":{"description":"Notificação não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"getV1NotificationsId"}},"/v1/notifications":{"post":{"summary":"Cadastra uma nova notificação.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Notifications"}}],"responses":{"201":{"description":"Notificação cadastrada com sucesso.","schema":{"$ref":"#/definitions/Notification"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"postV1Notifications"},"get":{"summary":"Retorna uma lista de notificações.","description":"Utilize este método para listar as notificações associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"id","enum":["id"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Notification"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["notifications"],"operationId":"getV1Notifications"}},"/v1/merchants/{id}/registry_code":{"patch":{"summary":"Atualiza o CNPJ de uma empresa.","description":"","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da empresa.","type":"integer","format":"int32","required":true},{"in":"formData","name":"registry_code","description":"CNPJ da empresa.","type":"string","required":true}],"responses":{"200":{"description":"Empresa atualizada com sucesso.","schema":{"$ref":"#/definitions/Merchant"}},"404":{"description":"Empresa não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchants"],"operationId":"patchV1MerchantsIdRegistryCode"}},"/v1/merchants/{id}":{"patch":{"produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true},{"in":"formData","name":"token_id","type":"string","required":true}],"responses":{"200":{"description":"patched Merchant","schema":{"$ref":"#/definitions/Merchant"}}},"tags":["merchants"],"operationId":"patchV1MerchantsId"},"get":{"summary":"Retorna uma empresa específica através do ID.","description":"","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da empresa que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Empresa encontrada.","schema":{"$ref":"#/definitions/Merchant"}},"404":{"description":"Empresa não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchants"],"operationId":"getV1MerchantsId"}},"/v1/merchants/current":{"get":{"summary":"Retorna a empresa atual.","description":"","produces":["application/json"],"responses":{"200":{"description":"Empresa encontrada.","schema":{"$ref":"#/definitions/Merchant"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchants"],"operationId":"getV1MerchantsCurrent"}},"/v1/merchants":{"get":{"summary":"Retorna uma lista de empresas.","description":"","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"id","enum":["id","name","status","code","email","registry_code","created_at","updated_at"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Merchant"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchants"],"operationId":"getV1Merchants"}},"/v1/merchant_users/{id}":{"delete":{"description":"Remove um usuário associado.","produces":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Usuário removido com sucesso.","schema":{"$ref":"#/definitions/MerchantUser"}},"404":{"description":"Usuário não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchant_users"],"operationId":"deleteV1MerchantUsersId"},"put":{"description":"Atualiza um usuário associado.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1MerchantUsers"}}],"responses":{"200":{"description":"Usuário atualizado com sucesso.","schema":{"$ref":"#/definitions/MerchantUser"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchant_users"],"operationId":"putV1MerchantUsersId"},"get":{"description":"Retorna um usuário associado através do ID.","produces":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Usuário encontrado.","schema":{"$ref":"#/definitions/MerchantUser"}},"404":{"description":"Usuário não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchant_users"],"operationId":"getV1MerchantUsersId"}},"/v1/merchant_users/{id}/reactivate":{"post":{"description":"Reativa um usuário desativado por inatividade.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Usuário reativado com sucesso.","schema":{"$ref":"#/definitions/MerchantUser"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchant_users"],"operationId":"postV1MerchantUsersIdReactivate"}},"/v1/merchant_users":{"post":{"description":"Cadastra um novo usuário associado.","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1MerchantUsers"}}],"responses":{"201":{"description":"Usuário associado com sucesso.","schema":{"$ref":"#/definitions/MerchantUser"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchant_users"],"operationId":"postV1MerchantUsers"},"get":{"summary":"Retorna uma lista de usuários associados à empresa atual.","description":"Utilize este método para listar os Usuários de um determinado merchant. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003eemail\u003c/code\u003e e \u003ccode\u003estatus\u003c/code\u003e.\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"id","enum":["id","email","status"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/MerchantUser"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["merchant_users"],"operationId":"getV1MerchantUsers"}},"/v1/roles":{"get":{"description":"Retorna uma lista de perfis de acesso.","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"id","enum":["id","base_role"],"required":false},{"in":"query","name":"sort_order","description":"Sentido opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Full"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["roles"],"operationId":"getV1Roles"}},"/v1/users/current":{"get":{"description":"Retorna o usuário atual.","produces":["application/json"],"responses":{"200":{"description":"Ok. Usuário encontrado.","schema":{"$ref":"#/definitions/Full"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["users"],"operationId":"getV1UsersCurrent"}},"/v1/affiliates/{id}/archive":{"put":{"summary":"Atualiza o status do participante para arquivado","description":"Não é possível arquivar um participante com assinatura(s) ativa(s)\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do participante do split de pagamentos.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Participante do split de pagamentos arquivado com sucesso.","schema":{"$ref":"#/definitions/Affiliate"}},"404":{"description":"Participante do split de pagamentos não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["affiliates"],"operationId":"putV1AffiliatesIdArchive"}},"/v1/affiliates/{id}/verify":{"put":{"description":"Executa nova verificação de participante","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do participante do split de pagamentos.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Nova verificação iniciada com sucesso","schema":{"$ref":"#/definitions/Affiliate"}},"404":{"description":"Participante do split de pagamentos não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["affiliates"],"operationId":"putV1AffiliatesIdVerify"}},"/v1/affiliates/{id}":{"put":{"summary":"Atualiza o status do participante para ativo ou inativo.","description":"Não é possível inativar um participante com assinatura(s) ativa(s)\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do participante do split de pagamentos.","type":"integer","format":"int32","required":true},{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1Affiliates"}}],"responses":{"200":{"description":"Participante do split de pagamentos atualizado com sucesso.","schema":{"$ref":"#/definitions/Affiliate"}},"404":{"description":"Participante do split de pagamentos não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["affiliates"],"operationId":"putV1AffiliatesId"},"get":{"description":"Retorna um participante do split de pagamentos específico através do ID.","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID do participante do split de pagamentos.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Ok. Participante do split de pagamentos encontrado.","schema":{"$ref":"#/definitions/Affiliate"}},"404":{"description":"Participante do split de pagamentos não encontrado.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["affiliates"],"operationId":"getV1AffiliatesId"}},"/v1/affiliates":{"get":{"summary":"Retorna uma lista de participantes do split de pagamentos.","description":"","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false},{"in":"query","name":"query","description":"Filtro para busca","type":"string","required":false},{"in":"query","name":"sort_by","description":"Atributo opcional para ordenação","type":"string","default":"id","enum":["id","login","cpf","cnpj","enabled","status"],"required":false},{"in":"query","name":"sort_order","description":"Direção opcional para ordenação","type":"string","default":"asc","enum":["asc","desc"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Affiliate"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["affiliates"],"operationId":"getV1Affiliates"},"post":{"description":"Cadastra um novo participante do split de pagamento","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Affiliates"}}],"responses":{"201":{"description":"Participante do split de pagamento criado com sucesso","schema":{"$ref":"#/definitions/Affiliate"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["affiliates"],"operationId":"postV1Affiliates"}},"/v1/partner/integrations":{"post":{"summary":"Provisiona uma integração em uma subconta do parceiro.","description":"Cria uma integração para a subconta informada. O tipo é discriminado pelo campo `type` no body.\n\nTipos suportados:\n  • click_to_pay: registra o DPA na Mastercard, cria o método de pagamento `click_to_pay` e o vincula\n    ao gateway Vindi Pagamentos (acquirer yapay). Settings obrigatórias:\n      - `company_name` (String)\n      - `website` (String)\n  • clear_sale: instala a extensão antifraude ClearSale para a subconta. Settings obrigatórias:\n      - `modality` (String — `total_garantido` ou `real_time`)\n      - `username` (String)\n      - `password` (String)\n      - `custom_sla` (Integer, opcional — apenas quando `modality=total_garantido`)\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PartnerIntegrations"}}],"responses":{"201":{"description":"Integração provisionada com sucesso.","schema":{"$ref":"#/definitions/Entities::Partner::Integration::Response::ClickToPay"}},"403":{"description":"Sem permissão.","schema":{"$ref":"#/definitions/Errors"}},"409":{"description":"Já existe uma integração ativa deste tipo para a conta informada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"postV1PartnerIntegrations"},"get":{"summary":"Consulta uma integração instalada em uma subconta do parceiro.","description":"Retorna o estado atual das integrações instaladas na subconta do parceiro.\n\n- Quando `type` é informado e a integração existe: retorna o objeto em `integration`.\n- Quando `type` é informado e a integração NÃO existe (ou foi deletada):\n  retorna `200` com `integration: null` e um campo `message` explicando o motivo.\n- Quando `type` é omitido: retorna a lista de todas as integrações ativas/inativas da subconta\n  (array em `integrations`). Lista pode vir vazia.\n\nTipos aceitos no parâmetro `type`: `clear_sale` e `click_to_pay`.\n\nResposta inclui `status`, `modality` (clear_sale), `dpa_id` (click_to_pay) e\n`callback_url` quando aplicável.\n","produces":["application/json"],"parameters":[{"in":"query","name":"merchant_id","type":"integer","format":"int32","required":true},{"in":"query","name":"type","type":"string","enum":["click_to_pay","clear_sale"],"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso (pode ser objeto único, array ou nulo).","schema":{"$ref":"#/definitions/Entities::Partner::Integration::Response::ClickToPay"}},"403":{"description":"Sem permissão.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"getV1PartnerIntegrations"},"put":{"summary":"Atualiza uma integração instalada em uma subconta do parceiro.","description":"**Atualmente o PUT só atualiza integrações do tipo `clear_sale`.** Enviar\noutros tipos retorna 422.\n\nAtualiza o estado e/ou as configurações da integração. Aceita `status` (active/inactive)\ne `settings`. Todos os campos são opcionais — apenas o que for enviado é atualizado.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/putV1PartnerIntegrations"}}],"responses":{"200":{"description":"Integração atualizada com sucesso.","schema":{"$ref":"#/definitions/Entities::Partner::Integration::Response::ClearSale"}},"403":{"description":"Sem permissão.","schema":{"$ref":"#/definitions/Errors"}},"404":{"description":"Integração não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"putV1PartnerIntegrations"},"delete":{"summary":"Remove uma integração de uma subconta do parceiro.","description":"Remove a integração informada da subconta do parceiro. O tipo é discriminado pelo campo `type` na query.\n\nTipos suportados:\n  • click_to_pay: marca a integração como removida, desativa o método de pagamento `click_to_pay`\n    e cancela o registro do DPA na Mastercard.\n","produces":["application/json"],"parameters":[{"in":"query","name":"merchant_id","type":"integer","format":"int32","required":true},{"in":"query","name":"type","type":"string","enum":["click_to_pay"],"required":true}],"responses":{"200":{"description":"Integração removida com sucesso.","schema":{"$ref":"#/definitions/Entities::Partner::Integration::Response::Delete"}},"403":{"description":"Sem permissão.","schema":{"$ref":"#/definitions/Errors"}},"404":{"description":"Integração não encontrada.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"deleteV1PartnerIntegrations"}},"/v1/partner/gateways/pix":{"post":{"summary":"Cadastra um novo gateway de Pix vinculado a um método de pagamento.","description":"Provisiona um gateway de Pix junto com seus métodos de pagamento em uma única chamada.\nCada item de `payment_methods` informa code, name e expiration_time (minutos, faixa 1..1440).\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PartnerGatewaysPix"}}],"responses":{"201":{"description":"Gateway Pix cadastrado com sucesso.","schema":{"$ref":"#/definitions/Entities::Partner::Gateway::Pix::Response::Full"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"postV1PartnerGatewaysPix"}},"/v1/partner/gateways/bolepix":{"post":{"summary":"Cadastra um novo gateway Bolepix (pix_bank_slip).","description":"Credenciais Yapay: token_account (obrigatório), reseller_token (opcional),\npayment_tax_code (opcional). merchant_code é obtido automaticamente quando omitido.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PartnerGatewaysBolepix"}}],"responses":{"201":{"description":"Gateway Bolepix cadastrado com sucesso.","schema":{"$ref":"#/definitions/Entities::Partner::Gateway::PixBankSlip::Response::Full"}},"503":{"description":"Serviço de obtenção de credenciais indisponível. Tente novamente.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"postV1PartnerGatewaysBolepix"}},"/v1/partner/gateways":{"post":{"summary":"Cadastra um novo gateway.","description":"Campos obrigatórios das credenciais por adquirente:\n            • Stone: SAK e-commerce (Chave de filiação) = merchant\n• Stone V2: username e password\n• Cielo V3: merchant_id, merchant_key\n• Bin: user, password, pem_password, cert e key\n• E Rede Rest: pv e password\n• Getnet: login, password, merchant, terminal_id\n• Getnet V2: client_id e client_secret\n• Safra Pay: ec e terminal\n• Pagar Me: Chave API = api_key\n• Adyen: username, password e merchant_account\n• Yapay: token_account (obrigatório); merchant_code obtido automaticamente no cadastro quando omitido; Reseller Token = reseller_token (opcional)\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PartnerGateways"}}],"responses":{"201":{"description":"Gateway cadastrado com sucesso.","schema":{"$ref":"#/definitions/Entities::Partner::Gateway::Response::Full"}},"503":{"description":"Serviço de obtenção de credenciais indisponível. Tente novamente.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"postV1PartnerGateways"}},"/v1/partner/accounts":{"post":{"summary":"Cadastra uma nova conta do parceiro","description":"A API de parceiros é ideal para parcerias de contas guarda-chuva ou [canais*](https://blog.vindi.com.br/programa-de-parcerias/). Com essa integração, nossos parceiros terão autonomia para criar suas próprias contas SaaS e se conectar à subadquirente da Vindi, via API.\nOs novos endpoints fazem parte de uma rota de serviços de autoatendimento, permitindo a criação e o credenciamento de subcontas de contas guarda-chuva por meio da API. Com isso, o processo de criação de conta na Vindi Recorrência e na Vindi Pagamentos é automatizado, oferecendo uma experiência mais rápida e eficiente aos nossos parceiros.\n\nPara solicitar as credenciais para utilização, fale com a gente na [central de ajuda](https://atendimento.vindi.com.br/hc/pt-br) ou com o seu gerente de contas para que a integração seja liberada.\n\nUtilize esta função para criar novas contas.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PartnerAccounts"}}],"responses":{"201":{"description":"Subconta criada com sucesso","schema":{"$ref":"#/definitions/Account"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"postV1PartnerAccounts"},"get":{"summary":"Retorna uma lista de contas do parceiro.","description":"Utilize este método para listar as contas associadas ao parceiro. Leia a documentação sobre [paginação](https://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](https://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n","produces":["application/json"],"parameters":[{"in":"query","name":"page","description":"Page of results to fetch.","type":"integer","format":"int32","default":1,"required":false},{"in":"query","name":"per_page","description":"Number of results to return per page.","type":"integer","format":"int32","default":25,"required":false}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Account"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"getV1PartnerAccounts"}},"/v1/partner/accounts/{id}":{"get":{"summary":"Retorna o status da conta do parceiro.","description":"Utilize este método para listar as contas associadas ao parceiro.\n","produces":["application/json"],"parameters":[{"in":"path","name":"id","description":"ID da conta que deverá ser retornada.","type":"integer","format":"int32","required":true}],"responses":{"200":{"description":"Consulta realizada com sucesso.","schema":{"type":"array","items":{"$ref":"#/definitions/Account"}}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["partner"],"operationId":"getV1PartnerAccountsId"}},"/v1/billing":{"post":{"summary":"Cria produto, cliente, perfil de pagamento e fatura avulsa.","description":"O endpoint de billing permite criar produtos, clientes, perfis de pagamento e faturas avulsas em uma única chamada, simplificando o processo de cobrança.\n\nTodas as faturas seguirão as configurações de retentativa e notificações previamente configuradas na plataforma.\n\n#### Exemplo\n\nO exemplo abaixo efetua a criação de uma fatura avulsa usando apenas os atributos obrigatórios:\n\n```\n{\n  \"payment_method_code\": \"credit_card\",\n  \"customer\": {\n    \"name\": \"João Silva\",\n    \"email\": \"joao@exemplo.com\",\n    \"registry_code\": \"12345678900\",\n    \"phones_attributes\": [\n      {\n        \"phone_type\": \"mobile\",\n        \"number\": \"+5511999999999\"\n      }\n    ],\n    \"address_attributes\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"additional_details\": \"Apto 45\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01234-567\",\n      \"country\": \"BR\"\n    }\n  },\n  \"payment_profile\": {\n    \"card_number\": \"4111111111111111\",\n    \"holder_name\": \"João Silva\",\n    \"card_expiration\": \"12/25\",\n    \"card_cvv\": \"123\",\n    \"payment_company_code\": \"mastercard\"\n  },\n  \"bill_items\": [\n    {\n      \"code\": \"PROD001\",\n      \"name\": \"Produto Teste\",\n      \"amount\": 100,\n      \"pricing_schema\": {\n        \"schema_type\": \"flat\",\n        \"price\": 100\n      }\n    }\n  ],\n  \"discard_credit_card\": true\n}\n```\n\nRecomendamos que você implemente apenas estes parâmetros obrigatórios e adicione os opcionais a medida que a necessidade surgir. Normalmente o comportamento padrão da plataforma é suficiente para a maioria dos casos de uso.\n\nOs campos de antifraude são totalmente opcionais. O envio de qualquer um deles não é obrigatório e a fatura será criada normalmente sem eles. Os dados não são persistidos no banco de dados e são utilizados exclusivamente para análise de antifraude junto ao gateway.\n\n#### Dados do Cliente\n\nO billing permite criar um novo cliente automaticamente através do parâmetro `customer`. Se o cliente já existir (verificado pelo email), ele será reutilizado. Caso contrário, um novo cliente será criado com os dados fornecidos.\n\nOs dados obrigatórios do cliente são:\n- `name`: Nome completo do cliente\n- `email`: Email do cliente (usado para identificação)\n\nOs dados opcionais do cliente incluem:\n- `customer_ip`: IP do comprador para análise de antifraude (formato IPv4)\n- `registry_code`: Documento do cliente (CPF ou CNPJ) - sem pontuação\n- `date_of_birth`: Data de nascimento do cliente no formato ISO 8601 (YYYY-MM-DD). Exemplo: \"1990-05-15\"\n- `phones_attributes`: Array com telefones do cliente\n  - `phone_type`: Tipo do telefone\n  - `number`: Número do telefone completo\n- `address_attributes`: Endereço do cliente\n  - `street`: Nome da rua\n  - `number`: Número do endereço\n  - `additional_details`: Complemento (apartamento, sala, etc.)\n  - `neighborhood`: Bairro\n  - `city`: Cidade\n  - `state`: Estado (sigla de 2 letras, ex: SP, RJ, MG)\n  - `zipcode`: CEP\n  - `country`: País (sigla de 2 letras, ex: BR para Brasil)\n\n#### Dados de Entrega (Antifraude)\n\nO parâmetro `shipping` dentro de `customer` permite informar dados de entrega para análise de antifraude. Todos os campos são opcionais.\n\n- `amount`: Valor do frete (numérico). Exemplo: 15.63\n- `description`: Descrição da entrega. Exemplo: \"Entrega expressa\"\n- `recipient_name`: Nome de quem vai receber a entrega\n- `recipient_phone`: Telefone do destinatário no formato E.164. Exemplo: \"+5541999999999\"\n- `estimated_date`: Data estimada de entrega no formato ISO 8601 (YYYY-MM-DD). Exemplo: \"2026-06-30\"\n- `shipping_address`: Endereço completo de entrega\n  - `street`: Nome da rua\n  - `number`: Número do endereço\n  - `additional_details`: Complemento\n  - `neighborhood`: Bairro\n  - `city`: Cidade\n  - `state`: Estado (sigla de 2 letras, ex: SP, RJ, MG)\n  - `zipcode`: CEP (8 dígitos numéricos, ex: \"01234567\")\n  - `country`: País (sigla de 2 letras, ex: BR para Brasil)\n\nEstes dados não são persistidos no banco de dados e são utilizados exclusivamente para enriquecer a análise de antifraude junto ao gateway.\n\n#### Lista de Produtos\n\nSua fatura avulsa deve conter no mínimo um item na lista `bill_items`. Cada item deve ter um produto associado, que pode ser existente ou novo.\n\nPara produtos existentes, você deve referenciar através do parâmetro `code` do produto.\n\nPara produtos novos, você deve fornecer os dados completos do produto:\n- `code`: Código externo do produto\n- `name`: Nome do produto\n- `amount`: Valor total do item na fatura\n- `pricing_schema`: Esquema de precificação (obrigatório para produtos novos)\n\nDiferente das faturas geradas a partir de assinaturas, o valor dos itens das faturas avulsas pode ser informado através do parâmetro `amount` dentro da lista `bill_items`.\n\nOs campos opcionais por item para análise de antifraude são:\n- `sku`: SKU do produto. Exemplo: \"9919023\"\n- `category`: Código numérico da categoria do produto. Exemplo: 201\n- `description`: Descrição do produto\n\n#### Método de Pagamento\n\nCaso o método escolhido seja cartão de crédito, o billing irá validar o perfil de pagamento informado no parâmetro `payment_profile`.\n\n#### Perfil de Pagamento\n\nO billing pode criar automaticamente um perfil de pagamento para o cliente, se necessário. Isso é feito através do parâmetro `payment_profile` que deve conter os dados do cartão de crédito ou outros dados de pagamento conforme o método escolhido.\n\n**Importante**: Para métodos de pagamento que requerem perfil de pagamento (como cartão de crédito), o parâmetro `payment_profile` é obrigatório e deve conter os dados necessários para o método escolhido.\n\nPara cartão de crédito, os dados obrigatórios são:\n- `card_number`: Número do cartão\n- `card_holder_name`: Nome do titular do cartão\n- `card_expiration`: Data de expiração (formato MM/AA)\n- `card_cvv`: Código de segurança\n\nCaso o perfil de pagamento já exista, o billing irá utilizar o perfil existente, este deve ser informado pelo atributo id.\n\n#### Descartar Cartão de Crédito\n\nO parâmetro `discard_credit_card` permite controlar se o cartão de crédito deve ser descartado após a criação da fatura. Quando definido como `true`, o perfil de pagamento criado será removido automaticamente após a fatura ser criada, garantindo que os dados do cartão não sejam armazenados permanentemente na plataforma.\n\nEsta funcionalidade é especialmente útil para casos onde você deseja processar um pagamento único sem manter os dados do cartão para futuras cobranças, aumentando a segurança e conformidade com regulamentações de proteção de dados.\n\n#### Condição de Pagamento\n\nPor padrão, a condição de pagamento configurada no método de pagamento será utilizada para emitir a cobrança da fatura avulsa.\n\nSe desejar customizar a condição para uma fatura específica, informe o parâmetro `payment_condition`.\n\nCaso você receba um erro no atributo `payment_condition` informando que o mesmo é inválido, verifique se os dados de data de vencimento `due_at`, data de agendamento `billing_at` e desconto por pontualidade `payment_condition.payment_condition_discounts.days_before_due` estão válidos. O valor da data do limite de desconto não pode ser retroativa, sendo assim, é possível que o parâmetro `payment_condition` fique inválido mesmo que não tenha sido informado, visto que as informações do método de pagamento escolhido serão utilizadas por padrão.\n\n#### Nosso Número do Boleto\n\nO parâmetro `custom_bank_slip_our_number` permite que o cliente defina o número de identificação do título ao invés de usar a geração automática da Vindi.\n\nApenas números são aceitos, com um máximo de **8 caracteres** e valores no range de **1** a **99999999**.\n\nDeve ser único por método de pagamento.\n\nCampo aplicado apenas para boletos emitidos pelo Itaú (online).\n\n**Validações e comportamentos:**\n\nTodos os zeros à esquerda serão automaticamente removidos para evitar problemas na conciliação.\nExemplo: Se enviado \"00012345\", será processado como \"12345\".\n\n\n**Observações importantes:**\n\n- Se não informado, a Vindi gerará automaticamente o número sequencial.\n- É fundamental que o cliente mantenha um controle rigoroso de numeração para prevenir falhas por duplicação.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1Billing"}}],"responses":{"201":{"description":"Fatura avulsa criada com sucesso.","schema":{"$ref":"#/definitions/Billing::Full"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["billing"],"operationId":"postV1Billing"}},"/v1/three_d_secure/sessions/validate":{"post":{"summary":"Valida resultado do desafio 3DS 2.0","description":"Finaliza o fluxo de autenticação **3D Secure 2.0**, consultando o resultado do desafio (challenge) e retornando o `status` final, `liability shift` e os dados de autenticação necessários para envio à adquirente na transação.\n\nEste endpoint deve ser chamado **após** o retorno do iframe de challenge no `return_url` informado em [`/sessions/enroll`](#tag/three_d_secure/operation/post-v1-three_d_secure-sessions-enroll), utilizando o `authentication_transaction_id` recebido naquela etapa.\n\n#### Quando chamar\n\n- **Frictionless** (`challenge_required = false` no enroll): **não é necessário** chamar `/validate`. Os dados de autenticação já vieram em `consumer_authentication_information` do enroll.\n- **Challenge** (`challenge_required = true` no enroll): **obrigatório** chamar `/validate` após o callback de retorno do iframe.\n\n#### Exemplo de requisição\n\n```json\n{\n  \"authentication_transaction_id\": \"auth_8aa8b3c2c8\",\n  \"card_type\": \"visa\"\n}\n```\n\n#### Exemplo de resposta — sucesso\n\n```json\n{\n  \"status\": \"AUTHENTICATION_SUCCESSFUL\",\n  \"consumer_authentication_information\": {\n    \"cavv\": \"AAABBWcSNIdjeUZThmNHAAAAAAA=\",\n    \"xid\": \"MGpHWmpiNVZpbjAwODEzbDdGVzA=\",\n    \"eci\": \"05\",\n    \"specification_version\": \"2.2.0\",\n    \"directory_server_transaction_id\": \"f38e6948-5388-41a6-bca4-b49723c19437\"\n  },\n  \"liability_shift\": true\n}\n```\n\n#### Status possíveis\n\n| `status` | Significado | `liability_shift` |\n|---|---|---|\n| `AUTHENTICATION_SUCCESSFUL` | Autenticação concluída com sucesso | `true` |\n| `AUTHENTICATION_ATTEMPTED` | Emissor não conseguiu autenticar mas atestou tentativa | `true` |\n| `AUTHENTICATION_FAILED` | Autenticação falhou (cartão inválido, comprador desistiu) | `false` |\n| `AUTHENTICATION_REJECTED` | Emissor rejeitou explicitamente a transação | `false` |\n\n#### Como utilizar o resultado na transação\n\nOs campos retornados em `consumer_authentication_information` (`cavv`, `xid`, `eci`, `specification_version`, `directory_server_transaction_id`) devem ser enviados na chamada de captura/autorização da transação para que a adquirente reconheça a transação como autenticada e aplique o `liability shift`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ThreeDSecureSessionsValidate"}}],"responses":{"200":{"description":"Resultado da autenticação retornado com sucesso.","schema":{"$ref":"#/definitions/ThreeDSecure::Response::Validate"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"502":{"description":"Erro sistêmico no provedor 3DS (gateway autenticador).","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["three_d_secure"],"operationId":"postV1ThreeDSecureSessionsValidate"}},"/v1/three_d_secure/sessions/enroll":{"post":{"summary":"Verifica elegibilidade e inicia autenticação 3DS 2.0","description":"Verifica a elegibilidade do cartão para autenticação **3D Secure 2.0** e inicia o fluxo de autenticação junto à bandeira/emissor. Esta é a **segunda etapa** do fluxo, executada após o Device Data Collection.\n\nEsta chamada também envia ao gateway autenticador (Cybersource) os dados obrigatórios do **comprador** (`buyer_information`), do **lojista** (`merchant_information`) e o **código de referência externo** (`client_reference_code`), conforme exigência da especificação 3DS 2.0 brasileira.\n\n#### Possíveis fluxos de resposta\n\n| Cenário | `status` | `challenge_required` | Próxima ação |\n|---|---|---|---|\n| Autenticação frictionless (sem desafio) | `AUTHENTICATION_SUCCESSFUL` | `false` | Capturar transação. `liability_shift = true` |\n| Desafio (challenge) requerido | `PENDING_AUTHENTICATION` | `true` | Renderizar iframe com `step_up_url` |\n| Cartão não inscrito no 3DS | `AUTHENTICATION_FAILED` | `false` | `liability_shift = false`. Decidir aceitar/recusar |\n| Valor abaixo do mínimo configurado | `AUTHENTICATION_SKIPPED` | `-` | Seguir para captura sem 3DS |\n\n#### Campos obrigatórios introduzidos pelo 3DS 2.0 (ST-6658)\n\nA partir da especificação Cybersource para o Brasil, os seguintes campos passaram a ser **obrigatórios** no payload de enrollment. A ausência de qualquer um deles retorna **422 Unprocessable Entity**.\n\n| Campo | Descrição | Equivalente Cybersource |\n|---|---|---|\n| `buyer_information.registry_code` | CPF/CNPJ do pagador (apenas dígitos) | `buyerInformation.merchantCustomerId` |\n| `merchant_information.merchant_name` | Razão social do lojista (aparece no desafio) | `merchantInformation.merchantDescriptor.name` |\n| `merchant_information.url` | URL do site do lojista | `merchantInformation.merchantDescriptor.url` |\n| `client_reference_code` | Código externo para lastreamento da transação | `clientReferenceInformation.code` |\n\n\u003e Os dados de **adquirente** (`acquirerBin`, `merchantId` do adquirente) e o `mcc` do lojista são injetados internamente pelo Gateway Vindi através do plugin _“autenticação 3DS 2.0”_ — **não devem ser enviados** pelo merchant nesta chamada.\n\n#### Exemplo de requisição\n\n```json\n{\n  \"session_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"amount\": 15000,\n  \"currency\": \"BRL\",\n  \"installments\": 1,\n  \"return_url\": \"https://minhaloja.com/checkout/3ds-return\",\n  \"client_reference_code\": \"bill_874306252\",\n  \"device_info\": {\n    \"ip_address\": \"192.168.1.1\",\n    \"user_agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"timezone_offset\": -180,\n    \"language\": \"pt-BR\"\n  },\n  \"billing_address\": {\n    \"name\": \"João da Silva\",\n    \"email\": \"joao@email.com\",\n    \"street\": \"Rua Exemplo\",\n    \"number\": \"123\",\n    \"additional_details\": \"Apto 45\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"postal_code\": \"01310100\",\n    \"country\": \"BR\"\n  },\n  \"buyer_information\": {\n    \"registry_code\": \"32412390884\",\n    \"mobile_phone\": \"+5511999999999\"\n  },\n  \"merchant_information\": {\n    \"merchant_name\": \"LOJA EXEMPLO SA\",\n    \"url\": \"https://www.lojaexemplo.com.br\"\n  }\n}\n```\n\n#### Exemplo de resposta — challenge requerido\n\n```json\n{\n  \"enroll\": {\n    \"status\": \"PENDING_AUTHENTICATION\",\n    \"authentication_transaction_id\": \"auth_8aa8b3c2c8\",\n    \"card_enrolled\": true,\n    \"liability_shift\": false,\n    \"veres_enrolled\": \"Y\",\n    \"challenge_required\": true,\n    \"step_up_url\": \"https://centinelapistag.cardinalcommerce.com/V2/Cruise/StepUp\",\n    \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n  }\n}\n```\n\n#### Renderização do iframe de Challenge\n\nQuando `challenge_required = true`, o lojista deve renderizar o iframe do desafio na tela de checkout, submetendo o `access_token` no formato `JWT` por `POST` para `step_up_url`. Ao final, o emissor irá redirecionar o navegador para o `return_url` informado nesta chamada.\n\n```html\n\u003ciframe id=\"step-up-iframe\" name=\"step-up-iframe\" width=\"400\" height=\"400\"\u003e\u003c/iframe\u003e\n\n\u003cform id=\"step-up-form\" target=\"step-up-iframe\" method=\"POST\"\n      action=\"\u003c%= enroll.step_up_url %\u003e\"\u003e\n  \u003cinput type=\"hidden\" name=\"JWT\" value=\"\u003c%= enroll.access_token %\u003e\" /\u003e\n\u003c/form\u003e\n\n\u003cscript\u003edocument.getElementById('step-up-form').submit();\u003c/script\u003e\n```\n\nApós o `POST` no `return_url`, chame [`/sessions/validate`](#tag/three_d_secure/operation/post-v1-three_d_secure-sessions-validate) com o `authentication_transaction_id` para obter o resultado final.\n\n#### Tabela de erros (HTTP 422)\n\n| `errors[0].code` | Significado |\n|---|---|\n| `THREE_DS_VALIDATION_ERROR` | Campo obrigatório ausente ou inválido |\n| `THREE_DS_SESSION_EXPIRED` | Sessão 3DS expirada — chamar `/setup` novamente |\n| `THREE_DS_INVALID_SESSION` | Sessão não pertence ao merchant ou já consumida |\n| `THREE_DS_ENROLLMENT_ERROR` | Falha genérica de enrollment |\n| `THREE_DS_GATEWAY_ERROR` | Erro de comunicação com o autenticador (502 quando sistêmico) |\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ThreeDSecureSessionsEnroll"}}],"responses":{"200":{"description":"Enrollment processado. Verifique `status` e `challenge_required`.","schema":{"$ref":"#/definitions/ThreeDSecure::Response::Enroll"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"502":{"description":"Erro sistêmico no provedor 3DS (gateway autenticador).","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["three_d_secure"],"operationId":"postV1ThreeDSecureSessionsEnroll"}},"/v1/three_d_secure/sessions/setup":{"post":{"summary":"Inicializa sessão 3DS 2.0","description":"Inicializa uma sessão de autenticação **3D Secure 2.0** para um perfil de pagamento já cadastrado na Vindi. Esta é a **primeira etapa** do fluxo 3DS via API e deve ser executada antes da coleta dos dados do dispositivo (Device Data Collection - DDC).\n\nA sessão retornada possui validade limitada e deve ser utilizada na etapa de [Enrollment](#tag/three_d_secure/operation/post-v1-three_d_secure-sessions-enroll).\n\n#### Fluxo recomendado de integração\n\n```\nSetup ──▶ Device Data Collection (iframe oculto) ──▶ Enroll ──▶ [Challenge iframe (opcional)] ──▶ Validate\n```\n\n1. **Setup** (este endpoint): cria a sessão 3DS e devolve `session_id`, `access_token` e `device_data_collection_url`.\n2. **Device Data Collection**: o `device_data_collection_url` deve ser renderizado em um `\u003ciframe\u003e` oculto no checkout para coletar o fingerprint do dispositivo (browser, IP, fuso, idioma).\n3. **Enroll**: após DDC, o checkout chama `/sessions/enroll` para verificar elegibilidade e iniciar a autenticação.\n4. **Challenge** (quando exigido pelo emissor): renderizar o `step_up_url` como `\u003ciframe\u003e` visível com `POST` oculto carregando `access_token`.\n5. **Validate**: ao receber o callback do `return_url`, chamar `/sessions/validate` para finalizar a autenticação.\n\n#### Exemplo de requisição\n\n```json\n{\n  \"payment_profile_id\": 12345,\n  \"payment_method_code\": \"credit_card\"\n}\n```\n\n#### Exemplo de resposta\n\n```json\n{\n  \"setup\": {\n    \"session_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"device_data_collection_url\": \"https://centinelapi.cardinalcommerce.com/V1/Cruise/Collect\",\n    \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"expires_at\": \"2026-05-20T12:30:00Z\",\n    \"reference_id\": \"ref_abc123\"\n  }\n}\n```\n\n#### Renderização do iframe de Device Data Collection\n\n```html\n\u003ciframe id=\"ddc-iframe\" name=\"ddc-iframe\" style=\"display:none;\"\u003e\u003c/iframe\u003e\n\n\u003cform id=\"ddc-form\" target=\"ddc-iframe\" method=\"POST\"\n      action=\"https://centinelapi.cardinalcommerce.com/V1/Cruise/Collect\"\u003e\n  \u003cinput type=\"hidden\" name=\"JWT\" value=\"\u003c%= setup.access_token %\u003e\" /\u003e\n\u003c/form\u003e\n\n\u003cscript\u003edocument.getElementById('ddc-form').submit();\u003c/script\u003e\n```\n\n#### Disponibilidade\n\nA funcionalidade 3DS 2.0 requer ativação da feature flag pela equipe Vindi e configuração do gateway autenticador no painel administrativo.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1ThreeDSecureSessionsSetup"}}],"responses":{"201":{"description":"Sessão 3DS criada com sucesso.","schema":{"$ref":"#/definitions/ThreeDSecure::Response::Setup"}},"401":{"description":"Credenciais inválidas ou ausentes.","schema":{"$ref":"#/definitions/Errors"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"502":{"description":"Erro sistêmico no provedor 3DS (gateway autenticador).","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["three_d_secure"],"operationId":"postV1ThreeDSecureSessionsSetup"}},"/v1/public/payment_profiles":{"post":{"summary":"Cadastra um novo perfil de pagamento","description":"Este método permite o cadastro de perfis de pagamento através de uma API específica para chamadas Javascript no browser do seu cliente. Com esta função você reduz o escopo PCI do seu projeto pois os dados do cartão de crédito não irão trafegador em seus servidores.\n\nOs parâmetros são praticamente os mesmos do método `POST /payment_profiles`. Para mais informações sobre o cadastro assíncrono via Javascript, consulte este artigo.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PublicPaymentProfiles"}}],"responses":{"201":{"description":"Perfil de pagamento cadastrado com sucesso.","schema":{"$ref":"#/definitions/PaymentProfile::Public"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["public"],"operationId":"postV1PublicPaymentProfiles"}},"/v1/public/wallets/apple_pay/merchant_validation":{"post":{"summary":"Validação do merchant para Apple Pay","description":"Este endpoint é responsável por realizar a etapa de [validação do merchant para o Apple Pay](https://developer.apple.com/documentation/applepayontheweb/providing-merchant-validation).\n\nO endpoint recebe uma URL de validação (validationURL) e retorna um `merchant_session` válido por 5 minutos.\n\nO objeto de resposta deve ser utilizado para completar a validação do merchant no seu frontend.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PublicWalletsApplePayMerchantValidation"}}],"responses":{"201":{"description":"Merchant validado com sucesso.","schema":{"$ref":"#/definitions/ApplePay::MerchantSession::Response::Create"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["wallets"],"operationId":"postV1PublicWalletsApplePayMerchantValidation"}},"/v1/public/wallets/click_to_pay":{"post":{"summary":"Cria um perfil de pagamento a partir de carteiras digitais","description":"Este endpoint recebe os dados do pagamento criptografado do Click to pay e retorna um `gateway_token`.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"in":"formData","name":"merchant_transaction_id","description":"ID da transação do merchant","type":"string","required":true},{"in":"formData","name":"x_src_cx_flow_id","description":"Identificador de afinidade de sessão","type":"string","required":true},{"in":"formData","name":"payment_method_code","description":"Código do método de pagamento","type":"string","required":false}],"responses":{"201":{"description":"Perfil de pagamento criado com sucesso."},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["wallets"],"operationId":"postV1PublicWalletsClickToPay"}},"/v1/public/wallets/apple_pay/token":{"post":{"summary":"Processa o token de pagamento Apple Pay e cria um perfil de pagamento","description":"Recebe os dados criptografados do token do Apple Pay e retorna um `gateway_token` para ser utilizado na criação da fatura.\nO campo `holder_name` é opcional, porém recomendamos seu preenchimento. Se esse campo não for enviado e também não estiver presente no token recebido do Apple Pay, ocorrerá um erro na criação do perfil de pagamento.\n","produces":["application/json"],"consumes":["application/json"],"parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/postV1PublicWalletsApplePayToken"}}],"responses":{"201":{"description":"Perfil de pagamento criado com sucesso.","schema":{"$ref":"#/definitions/PaymentProfile::Public"}},"422":{"description":"Parâmetros inválidos. Verificar erro na resposta.","schema":{"$ref":"#/definitions/Errors"}},"400":{"description":"Erro de sintaxe JSON no corpo do request.","schema":{"$ref":"#/definitions/Errors"}}},"tags":["wallets"],"operationId":"postV1PublicWalletsApplePayToken"}}},"definitions":{"Customer::Parameters::Update":{"type":"object","properties":{"name":{"type":"string","description":"Nome do cliente"},"email":{"type":"string","description":"E-mail do cliente"},"registry_code":{"type":"string","description":"CPF ou CNPJ do cliente"},"code":{"type":"string","description":"Código opcional para referência via API"},"notes":{"type":"string","description":"Observações adicionais internas sobre o cliente"},"metadata":{"type":"object","description":"Metadados do cliente"},"address":{"$ref":"#/definitions/Address::Parameters","description":"Endereço"},"phones":{"type":"array","items":{"$ref":"#/definitions/Phone::Parameters::Update"},"description":"Lista de números de telefone do cliente"}},"required":["name"]},"Address::Parameters":{"type":"object","properties":{"street":{"type":"string","description":"Endereço (rua, avenida etc)"},"number":{"type":"string","description":"Número do endereço"},"additional_details":{"type":"string","description":"Complemento do endereço"},"zipcode":{"type":"string","description":"CEP"},"neighborhood":{"type":"string","description":"Bairro"},"city":{"type":"string","description":"Cidade"},"state":{"type":"string","description":"Código do estado no formato ISO 3166-2. Exemplo: SP"},"country":{"type":"string","description":"Código do país no formato ISO 3166-1 alpha-2. Exemplo: BR"}},"required":["street","number","zipcode","neighborhood","city","state","country"]},"Phone::Parameters::Update":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do número de telefone. Informe apenas para atualizar um objeto existente"},"phone_type":{"type":"string","enum":["mobile","landline"],"description":"Tipo"},"number":{"type":"string","description":"Número de telefone no formato E.164 incluindo código do país e código de área. Exemplo: 5511975416666"},"extension":{"type":"string","description":"Ramal com até 6 dígitos"},"_destroy":{"type":"string"}},"required":["phone_type","number"]},"putV1Customers":{"type":"object","properties":{"body":{"type":"Update"},"name":{"type":"string","description":"Nome do cliente"},"email":{"type":"string","description":"E-mail do cliente"},"registry_code":{"type":"string","description":"CPF ou CNPJ do cliente"},"code":{"type":"string","description":"Código opcional para referência via API"},"notes":{"type":"string","description":"Observações adicionais internas sobre o cliente"},"metadata":{"type":"object","description":"Metadados do cliente","enum":"metadata"},"address":{"$ref":"#/definitions/Address::Parameters","description":"Endereço"},"phones":{"type":"array","description":"Lista de números de telefone do cliente","items":{"$ref":"#/definitions/Phone::Parameters::Update"}}},"required":["name"],"description":"Atualiza um cliente existente através do ID."},"Customer":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do cliente"},"name":{"type":"string","description":"Nome do cliente"},"email":{"type":"string","description":"E-mail do cliente"},"registry_code":{"type":"string","description":"CPF ou CNPJ do cliente"},"code":{"type":"string","description":"Código opcional para referência via API"},"notes":{"type":"string","description":"Observações adicionais internas sobre o cliente"},"status":{"type":"string","enum":["active","inactive","archived"],"description":"Status do cliente"},"created_at":{"type":"string","description":"Data e hora do cadastro do cliente"},"updated_at":{"type":"string","description":"Data e hora da última atualização do cliente"},"metadata":{"type":"object","description":"Metadados do cliente"},"address":{"$ref":"#/definitions/Address","description":"Endereço"},"phones":{"type":"array","items":{"$ref":"#/definitions/Phone"},"description":"Lista de números de telefone do cliente"}},"required":["id","name","status","created_at","updated_at"],"description":"Utilize este método para listar os clientes associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003eemail\u003c/code\u003e, \u003ccode\u003eregistry_code\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n"},"Address":{"type":"object","properties":{"street":{"type":"string","description":"Endereço (rua, avenida etc)"},"number":{"type":"string","description":"Número do endereço"},"additional_details":{"type":"string","description":"Complemento do endereço"},"zipcode":{"type":"string","description":"CEP"},"neighborhood":{"type":"string","description":"Bairro"},"city":{"type":"string","description":"Cidade"},"state":{"type":"string","description":"Código do estado no formato ISO 3166-2. Exemplo: SP"},"country":{"type":"string","description":"Código do país no formato ISO 3166-1 alpha-2. Exemplo: BR"}},"required":["street","number","zipcode","neighborhood","city","state","country"]},"Phone":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do número de telefone"},"phone_type":{"type":"string","enum":["mobile","landline"],"description":"Tipo"},"number":{"type":"string","description":"Número de telefone no formato E.164 incluindo código do país e código de área. Exemplo: 5511975416666"},"extension":{"type":"string","description":"Ramal com até 6 dígitos"}},"required":["id","phone_type","number"]},"Errors":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/definitions/Error"}}},"description":"Recebe os dados criptografados do token do Apple Pay e retorna um `gateway_token` para ser utilizado na criação da fatura.\nO campo `holder_name` é opcional, porém recomendamos seu preenchimento. Se esse campo não for enviado e também não estiver presente no token recebido do Apple Pay, ocorrerá um erro na criação do perfil de pagamento.\n"},"Error":{"type":"object","properties":{"id":{"type":"string","description":"Chave identificadora do erro"},"parameter":{"type":"string","description":"Parâmetros do erro"},"message":{"type":"string","description":"Detalhes do erro"}},"required":["id","message"]},"Customer::Parameters::Create":{"type":"object","properties":{"name":{"type":"string","description":"Nome do cliente"},"email":{"type":"string","description":"E-mail do cliente"},"registry_code":{"type":"string","description":"CPF ou CNPJ do cliente"},"code":{"type":"string","description":"Código opcional para referência via API"},"notes":{"type":"string","description":"Observações adicionais internas sobre o cliente"},"metadata":{"type":"object","description":"Metadados do cliente"},"address":{"$ref":"#/definitions/Address::Parameters","description":"Endereço"},"phones":{"type":"array","items":{"$ref":"#/definitions/Phone::Parameters::Create"},"description":"Lista de números de telefone do cliente"}},"required":["name"]},"Phone::Parameters::Create":{"type":"object","properties":{"phone_type":{"type":"string","enum":["mobile","landline"],"description":"Tipo"},"number":{"type":"string","description":"Número de telefone no formato E.164 incluindo código do país e código de área. Exemplo: 5511975416666"},"extension":{"type":"string","description":"Ramal com até 6 dígitos"}},"required":["phone_type","number"]},"postV1Customers":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo cliente."},"name":{"type":"string","description":"Nome do cliente"},"email":{"type":"string","description":"E-mail do cliente"},"registry_code":{"type":"string","description":"CPF ou CNPJ do cliente"},"code":{"type":"string","description":"Código opcional para referência via API"},"notes":{"type":"string","description":"Observações adicionais internas sobre o cliente"},"metadata":{"type":"object","description":"Metadados do cliente","enum":"metadata"},"address":{"$ref":"#/definitions/Address::Parameters","description":"Endereço"},"phones":{"type":"array","description":"Lista de números de telefone do cliente","items":{"$ref":"#/definitions/Phone::Parameters::Create"}}},"required":["name"],"description":"Cadastra um novo cliente."},"Plan::Parameters::Update":{"type":"object","properties":{"name":{"type":"string","description":"Nome do plano"},"interval":{"type":"string","enum":["days","months"],"description":"Duração do intervalo"},"interval_count":{"type":"integer","format":"int32","description":"Número de intervalos dentro de um período"},"billing_trigger_type":{"type":"string","enum":["beginning_of_period","end_of_period","day_of_month"],"description":"Referência para data de geração da cobrança"},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança"},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos em uma assinatura. Nulo significa duração indefinida"},"code":{"type":"string","description":"Código externo para referência via API"},"description":{"type":"string","description":"Descrição interna do plano"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do plano"},"plan_items":{"type":"array","items":{"$ref":"#/definitions/PlanItem::Parameters::Update"},"description":"Lista de itens incluídos no plano"},"metadata":{"type":"object","description":"Metadados do plano"}},"required":["name","interval","interval_count","billing_trigger_type","billing_trigger_day"]},"PlanItem::Parameters::Update":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do item. Informe apenas para atualizar um objeto existente"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"product_id":{"type":"integer","format":"int32","description":"ID do item"},"_destroy":{"type":"integer","format":"int32","description":"Preencha com '1' caso queira remover o objeto"}},"required":["product_id"]},"putV1Plans":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com os novos atributos do plano."},"name":{"type":"string","description":"Nome do plano"},"interval":{"type":"string","description":"Duração do intervalo","enum":["days","months"]},"interval_count":{"type":"integer","format":"int32","description":"Número de intervalos dentro de um período"},"billing_trigger_type":{"type":"string","description":"Referência para data de geração da cobrança","enum":["beginning_of_period","end_of_period","day_of_month"]},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança"},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos em uma assinatura. Nulo significa duração indefinida"},"code":{"type":"string","description":"Código externo para referência via API"},"description":{"type":"string","description":"Descrição interna do plano"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada"},"status":{"type":"string","description":"Status do plano","enum":["active","inactive","deleted"]},"plan_items":{"type":"array","description":"Lista de itens incluídos no plano","items":{"$ref":"#/definitions/PlanItem::Parameters::Update"}},"metadata":{"type":"object","description":"Metadados do plano","enum":"metadata"}},"required":["name","interval","interval_count","billing_trigger_type","billing_trigger_day"],"description":"Atualiza um plano existente."},"Plan":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do plano"},"name":{"type":"string","description":"Nome do plano"},"interval":{"type":"string","enum":["days","months"],"description":"Duração do intervalo"},"interval_count":{"type":"integer","format":"int32","description":"Número de intervalos dentro de um período"},"billing_trigger_type":{"type":"string","enum":["beginning_of_period","end_of_period","day_of_month"],"description":"Referência para data de geração da cobrança"},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança"},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos em uma assinatura. Nulo significa duração indefinida"},"code":{"type":"string","description":"Código externo para referência via API"},"description":{"type":"string","description":"Descrição interna do plano"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do plano"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada"},"interval_name":{"type":"string","description":"Nome do intervalo do plano gerado automaticamente a partir dos parâmetros de duração"},"created_at":{"type":"string","description":"Data e hora do cadastro do plano"},"updated_at":{"type":"string","description":"Data e hora da última atualização do plano"},"plan_items":{"type":"array","items":{"$ref":"#/definitions/PlanItem"},"description":"Lista de produtos incluídos no plano.\n              Este atributo exibe os primeiros 25 itens.\n              Para os demais, consulte o método `GET /plans/:id/plan_items`"},"metadata":{"type":"object","description":"Metadados do plano"}},"required":["id","name","interval","interval_count","billing_trigger_type","billing_trigger_day","status","installments","invoice_split","interval_name","created_at","updated_at"],"description":"Utilize este método para listar os planos associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003einterval_count\u003c/code\u003e, \u003ccode\u003einterval\u003c/code\u003e, \u003ccode\u003ebilling_cycles\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003ebilling_trigger_day\u003c/code\u003e, \u003ccode\u003ebilling_trigger_type\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n"},"PlanItem":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do item do plano"},"product":{"$ref":"#/definitions/Product","description":"Produto associado ao plano"},"pricing_schema":{"$ref":"#/definitions/PricingSchema","description":"Esquema de precificação atual do produto no plano"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"created_at":{"type":"string","description":"Data e hora da criação do item"},"updated_at":{"type":"string","description":"Data e hora da última atualização do item"}},"required":["id","product","created_at","updated_at"],"description":"Utilize este método para listar os itens associados a um produto. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination).\n"},"Product":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do produto"},"name":{"type":"string","description":"Nome do produto"},"code":{"type":"string","description":"Código externo do produto"},"unit":{"type":"string","description":"Texto para descrever uma unidade do produto. Apenas para quantidade variável"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do produto"},"description":{"type":"string","description":"Descrição interna do produto"},"invoice":{"type":"string","enum":["always","never"],"description":"Indica se este produto será incluído na emissão de notas fiscais. Se não informado, o valor `always` será utilizado"},"created_at":{"type":"string","description":"Data e hora do cadastro do produto"},"updated_at":{"type":"string","description":"Data e hora da última atualização do produto"},"pricing_schema":{"$ref":"#/definitions/PricingSchema","description":"Esquema de precificação atual do produto"},"metadata":{"type":"object","description":"Metadados do produto"}},"required":["id","name","status","created_at","updated_at"],"description":"Utilize este método para listar os produtos associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003einvoice\u003c/code\u003e, \u003ccode\u003eunit\u003c/code\u003e, \u003ccode\u003epricing_schema_id\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e, \u003ccode\u003eupdated_at\u003c/code\u003e, \u003ccode\u003eschema_type\u003c/code\u003e e \u003ccode\u003eprice\u003c/code\u003e.\n"},"PricingSchema":{"type":"object","properties":{"id":{"type":"string","description":"ID do esquema de precificação"},"short_format":{"type":"string","description":"Descrição da precificação gerada automaticamente"},"price":{"type":"number","description":"Preço base"},"minimum_price":{"type":"number","description":"Preço mínimo"},"schema_type":{"type":"string","enum":["flat","per_unit","step_usage","volume_usage","tier_usage"],"description":"Tipo de cálculo da precificação"},"pricing_ranges":{"type":"array","items":{"$ref":"#/definitions/PricingRange"},"description":"Lista de faixas de precificação"},"created_at":{"type":"string","description":"Data e hora do cadastro do esquema de precificação"}},"required":["id","short_format","price","schema_type","created_at"]},"PricingRange":{"type":"object","properties":{"id":{"type":"string","description":"ID do faixa de precificação"},"start_quantity":{"type":"integer","format":"int32","description":"Início da faixa"},"end_quantity":{"type":"integer","format":"int32","description":"Término da faixa. Opcional apenas para a última"},"price":{"type":"number","description":"Preço da unidade ou da faixa, dependendo do tipo escolhido"},"overage_price":{"type":"number","description":"Preço unitário do excedente da faixa"}},"required":["id","start_quantity","price"]},"Plan::Parameters::Create":{"type":"object","properties":{"name":{"type":"string","description":"Nome do plano"},"interval":{"type":"string","enum":["days","months"],"description":"Duração do intervalo"},"interval_count":{"type":"integer","format":"int32","description":"Número de intervalos dentro de um período"},"billing_trigger_type":{"type":"string","enum":["beginning_of_period","end_of_period","day_of_month"],"description":"Referência para data de geração da cobrança"},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança"},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos em uma assinatura. Nulo significa duração indefinida"},"code":{"type":"string","description":"Código externo para referência via API"},"description":{"type":"string","description":"Descrição interna do plano"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do plano"},"plan_items":{"type":"array","items":{"$ref":"#/definitions/PlanItem::Parameters::Create"},"description":"Lista de itens incluídos no plano"},"metadata":{"type":"object","description":"Metadados do plano"}},"required":["name","interval","interval_count","billing_trigger_type","billing_trigger_day"]},"PlanItem::Parameters::Create":{"type":"object","properties":{"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"product_id":{"type":"integer","format":"int32","description":"ID do item"}},"required":["product_id"]},"postV1Plans":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo plano."},"name":{"type":"string","description":"Nome do plano"},"interval":{"type":"string","description":"Duração do intervalo","enum":["days","months"]},"interval_count":{"type":"integer","format":"int32","description":"Número de intervalos dentro de um período"},"billing_trigger_type":{"type":"string","description":"Referência para data de geração da cobrança","enum":["beginning_of_period","end_of_period","day_of_month"]},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança"},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos em uma assinatura. Nulo significa duração indefinida"},"code":{"type":"string","description":"Código externo para referência via API"},"description":{"type":"string","description":"Descrição interna do plano"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada"},"status":{"type":"string","description":"Status do plano","enum":["active","inactive","deleted"]},"plan_items":{"type":"array","description":"Lista de itens incluídos no plano","items":{"$ref":"#/definitions/PlanItem::Parameters::Create"}},"metadata":{"type":"object","description":"Metadados do plano","enum":"metadata"}},"required":["name","interval","interval_count","billing_trigger_type","billing_trigger_day"],"description":"Cadastra um novo plano."},"Product::Parameters::Update":{"type":"object","properties":{"name":{"type":"string","description":"Nome do produto"},"code":{"type":"string","description":"Código externo do produto"},"unit":{"type":"string","description":"Texto para descrever uma unidade do produto. Apenas para quantidade variável"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do produto"},"description":{"type":"string","description":"Descrição interna do produto"},"invoice":{"type":"string","enum":["always","never"],"description":"Indica se este produto será incluído na emissão de notas fiscais. Se não informado, o valor `always` será utilizado"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do produto avulso"},"metadata":{"type":"object","description":"Metadados do produto"}},"required":["name","status"]},"PricingSchema::Parameters":{"type":"object","properties":{"price":{"type":"number","description":"Preço base"},"minimum_price":{"type":"number","description":"Preço mínimo"},"schema_type":{"type":"string","enum":["flat","per_unit","step_usage","volume_usage","tier_usage"],"description":"Tipo de cálculo da precificação"},"pricing_ranges":{"type":"array","items":{"$ref":"#/definitions/PricingRange::Parameters"},"description":"Lista de faixas de precificação"}},"required":["price","schema_type"]},"PricingRange::Parameters":{"type":"object","properties":{"start_quantity":{"type":"integer","format":"int32","description":"Início da faixa"},"end_quantity":{"type":"integer","format":"int32","description":"Término da faixa. Opcional apenas para a última"},"price":{"type":"number","description":"Preço da unidade ou da faixa, dependendo do tipo escolhido"},"overage_price":{"type":"number","description":"Preço unitário do excedente da faixa"}},"required":["start_quantity","price"]},"putV1Products":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com novos atributos do produto."},"name":{"type":"string","description":"Nome do produto"},"code":{"type":"string","description":"Código externo do produto"},"unit":{"type":"string","description":"Texto para descrever uma unidade do produto. Apenas para quantidade variável"},"status":{"type":"string","description":"Status do produto","enum":["active","inactive","deleted"]},"description":{"type":"string","description":"Descrição interna do produto"},"invoice":{"type":"string","description":"Indica se este produto será incluído na emissão de notas fiscais. Se não informado, o valor `always` será utilizado","enum":["always","never"]},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do produto avulso"},"metadata":{"type":"object","description":"Metadados do produto","enum":"metadata"}},"required":["name","status"],"description":"Atualiza um produto existente."},"Product::Parameters::Create":{"type":"object","properties":{"name":{"type":"string","description":"Nome do produto"},"code":{"type":"string","description":"Código externo do produto"},"unit":{"type":"string","description":"Texto para descrever uma unidade do produto. Apenas para quantidade variável"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do produto"},"description":{"type":"string","description":"Descrição interna do produto"},"invoice":{"type":"string","enum":["always","never"],"description":"Indica se este produto será incluído na emissão de notas fiscais. Se não informado, o valor `always` será utilizado"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do produto"},"metadata":{"type":"object","description":"Metadados do produto"}},"required":["name","status"]},"postV1Products":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo produto."},"name":{"type":"string","description":"Nome do produto"},"code":{"type":"string","description":"Código externo do produto"},"unit":{"type":"string","description":"Texto para descrever uma unidade do produto. Apenas para quantidade variável"},"status":{"type":"string","description":"Status do produto","enum":["active","inactive","deleted"]},"description":{"type":"string","description":"Descrição interna do produto"},"invoice":{"type":"string","description":"Indica se este produto será incluído na emissão de notas fiscais. Se não informado, o valor `always` será utilizado","enum":["always","never"]},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do produto"},"metadata":{"type":"object","description":"Metadados do produto","enum":"metadata"}},"required":["name","status"],"description":"Cadastra um novo produto."},"PaymentMethod":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do método de pagamento"},"public_name":{"type":"string","description":"Nome público do método de pagamento"},"name":{"type":"string","description":"Nome interno do método de pagamento"},"code":{"type":"string","description":"Código externo para referência via API"},"type":{"type":"string","description":"Tipo do método de pagamento"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do método de pagamento"},"settings":{"type":"hash","description":"Configurações específicas do método de pagamento"},"set_subscription_on_success":{"type":"string","enum":["do_not_set","set_without_authorization","set_with_authorization","legacy"],"description":"Se configurado como \"set_without_authorization\", assinaturas pagas com sucesso através deste método serão automaticamente atribuídas ao mesmo"},"allow_as_alternative":{"type":"boolean","description":"Indica se este método de pagamento será oferecido como alternativa para cobranças emitidas usando outros métodos"},"payment_companies":{"type":"array","items":{"$ref":"#/definitions/PaymentCompany"},"description":"Lista de bandeiras ou bancos habilitados para este método de pagamento"},"maximum_attempts":{"type":"integer","format":"int32","description":"Número máximo de tentativas automáticas de cobrança para este método de pagamento"},"created_at":{"type":"string","description":"Data e hora do cadastro do método de pagamento"},"updated_at":{"type":"string","description":"Data e hora da última atualização do método de pagamento"}},"required":["id","public_name","name","code","type","status","set_subscription_on_success","allow_as_alternative","created_at","updated_at"],"description":"Métodos de pagamento representam as opções de pagamento disponíveis para seus clientes. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ename\u003c/code\u003e e \u003ccode\u003ecode\u003c/code\u003e.\n"},"PaymentCompany":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da bandeira ou banco"},"name":{"type":"string","description":"Nome da bandeira ou banco"},"code":{"type":"string","description":"Código para referência via API"}},"required":["id","name","code"]},"Discount":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do desconto"},"discount_type":{"type":"string","enum":["percentage","amount","quantity"],"description":"Tipo do desconto"},"percentage":{"type":"number","description":"Valor numérico para porcentagem de 0.01 até 100"},"amount":{"type":"number","description":"Valor para desconto fixo"},"quantity":{"type":"integer","format":"int32","description":"Número para desconto por quantidade"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o desconto será aplicado a partir do momento de sua criação. Nulo significa desconto por tempo indefinido"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do desconto"},"created_at":{"type":"string","description":"Data e hora do cadastro do desconto"},"updated_at":{"type":"string","description":"Data e hora da última atualização do desconto"},"product_item":{"$ref":"#/definitions/ProductItem::Summary","description":"Produtos associado ao desconto"}},"required":["id","discount_type","status","created_at","updated_at","product_item"],"description":"Um desconto pode ser aplicado à um item específico de uma assinatura (`product_item`) e possui duração configurável (`cycles`). Utilize este método para obter detalhes de um desconto específico.\n\n#### Duração\nA duração de um desconto pode ser definida através do atributo `cycles` que representa o número de ciclos de recorrência onde o desconto será aplicado. É possível, por exemplo, configurar um desconto apenas para a próxima fatura, ou então conceder um desconto permanente. Neste último caso, o atributo `cycles` deverá permanecer nulo.\n\n#### Tipo\nCada desconto possui um tipo de cálculo diferente que deve ser informado no atributo `discount_type`. Os seguintes tipos de desconto estão disponíveis:\n\nTipo|Descrição\n----|----\n`percentage`|Porcentagem: Desconto baseado na porcentagem informada. Utilize um valor númerico entre 0.01 e 100.\n`amount`|Valor fixo: Desconto no valor exato informado. Mínimo: 0.01.\n`quantity`|Quantidade: Apenas para produtos com precificação por quantidade fixa (sem faixas). Informe um valor inteiro maior ou igual a 1.\n\n#### Cálculo\nTodos os descontos ativos serão aplicados no momento da geração da fatura e serão calculados a partir do valor original do item.\n\nCaso o total de descontos seja superior ao valor original, o preço final do produto permanecerá R$ 0,00.\n\n#### Desconto sobre desconto\nSe um item possuir mais de um desconto ativo, todos eles serão calculados a partir do valor original, conforme mencionado acima. Como exemplo, considere um item que custava originalmente R$ 100,00 e recebeu dois descontos: R$ 10,00 e 50%:\n\n```\nValor original: R$ 100,00\nDesconto 1: R$ 10,00\nDesconto 2: 50% de R$ 100,00 = R$ 50,00\n--\nValor final do produto: R$ 100,00 - R$ 60,00 = R$ 40,00\n```\n"},"ProductItem::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do item"},"product":{"$ref":"#/definitions/Product::Summary","description":"Produto associado ao plano"}},"required":["id","product"]},"Product::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do produto"},"name":{"type":"string","description":"Nome do produto"},"code":{"type":"string","description":"Código externo do produto"}},"required":["id","name"]},"Discount::Parameters::Create":{"type":"object","properties":{"product_item_id":{"type":"integer","format":"int32","description":"ID do item da assinatura que receberá o desconto"},"discount_type":{"type":"string","enum":["percentage","amount","quantity"],"description":"Tipo do desconto"},"percentage":{"type":"number","description":"Valor numérico para porcentagem de 0.01 até 100"},"amount":{"type":"number","description":"Valor para desconto fixo"},"quantity":{"type":"integer","format":"int32","description":"Número para desconto por quantidade"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o desconto será aplicado a partir do momento de sua criação. Nulo significa desconto por tempo indefinido"}},"required":["product_item_id","discount_type"]},"postV1Discounts":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo desconto."},"product_item_id":{"type":"integer","format":"int32","description":"ID do item da assinatura que receberá o desconto"},"discount_type":{"type":"string","description":"Tipo do desconto","enum":["percentage","amount","quantity"]},"percentage":{"type":"number","description":"Valor numérico para porcentagem de 0.01 até 100"},"amount":{"type":"number","description":"Valor para desconto fixo"},"quantity":{"type":"integer","format":"int32","description":"Número para desconto por quantidade"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o desconto será aplicado a partir do momento de sua criação. Nulo significa desconto por tempo indefinido"}},"required":["product_item_id","discount_type"],"description":"Cria um desconto em uma assinatura existente."},"Subscription":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da assinatura"},"status":{"type":"string","enum":["active","canceled","future","expired"],"description":"Status da assinatura"},"start_at":{"type":"string","description":"Data do início da assinatura no formato ISO 8601"},"end_at":{"type":"string","description":"Data do término da assinatura no formato ISO 8601"},"next_billing_at":{"type":"string","description":"Data da próxima cobrança da assinatura"},"overdue_since":{"type":"string","description":"Data do início da inadimplência"},"code":{"type":"string","description":"Código externo para referência via API"},"cancel_at":{"type":"string","description":"Data do cancelamento da assinatura"},"interval":{"type":"string","enum":["days","months"],"description":"Duração do intervalo"},"interval_count":{"type":"integer","format":"int32","description":"Número de intervalos dentro de um período"},"billing_trigger_type":{"type":"string","enum":["beginning_of_period","end_of_period","day_of_month"],"description":"Referência para data de geração da cobrança"},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança."},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos da assinatura. Nulo significa duração indefinida"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas"},"created_at":{"type":"string","description":"Data e hora do cadastro da assinatura"},"updated_at":{"type":"string","description":"Data e hora da última atualização da assinatura"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente da assinatura"},"plan":{"$ref":"#/definitions/Plan::Summary","description":"Plano da assinatura"},"product_items":{"type":"array","items":{"$ref":"#/definitions/ProductItem"},"description":"Produtos incluídos na assinatura. Este atributo exibe os primeiros 25 itens. Para os demais, consulte o método `GET /subscriptions/:id/product_items`."},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento utilizado"},"current_period":{"$ref":"#/definitions/Period::Summary","description":"Período atual da assinatura, se existir"},"metadata":{"type":"object","description":"Metadados da assinatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Summary","description":"Perfil de pagamento associada à assinatura. Este atributo permancerá nulo caso nenhum perfil de pagamento esteja explicitamente associado à assinatura."},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada. Indica se uma nota fiscal será emitida de acordo com a periodicidade do plano."},"subscription_affiliates":{"type":"array","items":{"$ref":"#/definitions/SubscriptionAffiliate::Response::Full"},"description":"Lista de participantes da assinatura. Este campo é exclusivo para transaçõesque utilizaram a regra de split de pagamento e os participantes estejam ativos."},"pix_automatic_consent_url":{"type":"string","description":"URL para autorização do PIX Automático, se aplicável"}},"required":["id","status","start_at","interval","interval_count","billing_trigger_type","billing_trigger_day","installments","created_at","updated_at","customer","plan","product_items","payment_method"],"description":"Utilize este método para listar as assinaturas associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003estatus\u003c/code\u003e,\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003einterval\u003c/code\u003e, \u003ccode\u003einterval_count\u003c/code\u003e, \u003ccode\u003ebilling_trigger_day\u003c/code\u003e, \u003ccode\u003ebilling_trigger_type\u003c/code\u003e, \u003ccode\u003ebilling_cycles\u003c/code\u003e, \u003ccode\u003eplan_id\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003estart_at\u003c/code\u003e, \u003ccode\u003ecancel_at\u003c/code\u003e, \u003ccode\u003eoverdue_since\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e, \u003ccode\u003eupdated_at\u003c/code\u003e e \u003ccode\u003eend_at\u003c/code\u003e.\n\n#### Inadimplência\nAlém dos filtros acima, a busca por assinaturas adimplentes ou inadimplentes pode ser realizada através do atributo `overdue_since` no parâmetro `query`. Exemplos:\n\n- Assinaturas adimplentes: `overdue_since = null`\n- Assinaturas inadimplentes: `overdue_since != null`\n- Assinaturas inadimplentes há mais de n dias: `overdue_since \u003c 2016-03-15`\n\n#### Itens da assinatura\n\nUma assinatura é composta de vários itens representados no array `product_items`. Este endpoint lista apenas os 25 primeiros itens de cada assinatura. Caso queira listar mais itens de uma assinatura, utilize o método da API `GET /subscriptions/{id}/product_items`.\n"},"Customer::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do cliente"},"name":{"type":"string","description":"Nome do cliente"},"email":{"type":"string","description":"E-mail do cliente"},"code":{"type":"string","description":"Código opcional para referência via API"}},"required":["id","name"]},"Plan::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do plano"},"name":{"type":"string","description":"Nome do plano"},"code":{"type":"string","description":"Código externo do plano"}},"required":["id","name"]},"ProductItem":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do item"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do item"},"uses":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência que utilizaram o produto."},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do produto incluído na assinatura. Se não for informado, o valor '1' será utilizado"},"created_at":{"type":"string","description":"Data e hora da criação do item"},"updated_at":{"type":"string","description":"Data e hora da última atualização do item"},"product":{"$ref":"#/definitions/Product::Summary","description":"Produto associado ao plano"},"pricing_schema":{"$ref":"#/definitions/PricingSchema","description":"Esquema de precificação atual do item"},"discounts":{"type":"array","items":{"$ref":"#/definitions/Discount::Summary"},"description":"Lista de descontos ativos. Descontos já aplicados não serão retornados"}},"required":["id","status","created_at","updated_at","product"],"description":"Uma assinatura (`subscription`) é composta de um ou mais `product_items`, que representam os itens da assinatura que serão usados para criar as faturas (`bill`) de cada período (`period`).\n"},"Discount::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do desconto"},"discount_type":{"type":"string","enum":["percentage","amount","quantity"],"description":"Tipo do desconto"},"percentage":{"type":"number","description":"Valor numérico para porcentagem de 0.01 até 100"},"amount":{"type":"number","description":"Valor para desconto fixo"},"quantity":{"type":"integer","format":"int32","description":"Número para desconto por quantidade"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o desconto será aplicado a partir do momento de sua criação. Nulo significa desconto por tempo indefinido"}},"required":["id","discount_type"]},"PaymentMethod::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do método de pagamento"},"public_name":{"type":"string","description":"Nome público do método de pagamento"},"name":{"type":"string","description":"Nome interno do método de pagamento"},"code":{"type":"string","description":"Código externo para referência via API"},"type":{"type":"string","description":"Tipo do método de pagamento"}},"required":["id","public_name","name","code","type"]},"Period::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do período"},"billing_at":{"type":"string","description":"Data para geração automática da cobrança do período"},"cycle":{"type":"integer","format":"int32","description":"Ciclo do período"},"start_at":{"type":"string","description":"Data e hora do início do período"},"end_at":{"type":"string","description":"Data e hora do término do período"},"duration":{"type":"integer","format":"int32","description":"Duração do período em número de segundos"}},"required":["id","cycle","start_at","end_at","duration"]},"PaymentProfile::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do perfil de pagamento"},"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number_first_six":{"type":"string","description":"Primeiros 6 dígitos do cartão de crédito (BIN/IIN)"},"card_number_last_four":{"type":"string","description":"Últimos 4 dígitos do cartão de crédito"},"renewed_card":{"type":"object","properties":{"card_number_last_four":{"type":"string","description":"Últimos quatro dígitos do cartão de crédito renovado"},"card_expiration":{"type":"string","description":"Nova validade do cartão de crédito renovado"}}},"card_renewed_at":{"type":"string","description":"Data da renovação do cartão de crédito renovado"},"token":{"type":"string","description":"Token interno para referência do perfil de pagamento"},"created_at":{"type":"string","description":"Data e hora do cadastro do perfil de pagamento"},"payment_company":{"$ref":"#/definitions/PaymentCompany","description":"Bandeira ou banco do perfil de pagamento"}},"required":["id","token","created_at","payment_company"]},"SubscriptionAffiliate::Response::Full":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do participante na assinatura"},"affiliate_id":{"type":"integer","format":"int32","description":"ID do participante"},"amount":{"type":"number","description":"Fração do valor da assinatura referente ao participante"},"amount_type":{"type":"integer","format":"int32","description":"Tipo de valor da assinatura, onde 1 representa uma quantia fixa (amount) e 2 representa a porcentagem (percentage)"},"status":{"type":"string","description":"Status do participante em uma assinatura"}}},"Subscription::Parameters::Update":{"type":"object","properties":{"code":{"type":"string","description":"Código externo para referência via API"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"installments":{"type":"integer","format":"int32","description":"Parcelamento da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"billing_trigger_type":{"type":"string","enum":["beginning_of_period","end_of_period","day_of_month"],"description":"Referência para data de geração da cobrança"},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança."},"next_billing_at":{"type":"string"},"metadata":{"type":"object","description":"Metadados da assinatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à assinatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomendável)"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada. Indica se uma nota fiscal será emitida de acordo com a periodicidade do plano (`true`). Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"subscription_affiliates":{"type":"array","items":{"$ref":"#/definitions/SubscriptionAffiliate::Parameters::Update"},"description":"Lista de participantes da assinatura. Este campo é exclusivo para transaçõesque utilizaram a regra de split de pagamento e os participantes estejam ativos."}},"required":["payment_method_code"]},"PaymentProfile::Parameters::FindOrCreate":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do perfil de pagamento existente"},"token":{"type":"string"},"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number":{"type":"string","description":"Número completo do cartão de crédito"},"card_cvv":{"type":"string","description":"Código de segurança do cartão de crédito com 3 ou 4 dígitos"},"card_token":{"type":"string"},"gateway_id":{"type":"string"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código do banco ou bandeira"},"gateway_token":{"type":"string","description":"Token externo"}}},"SubscriptionAffiliate::Parameters::Update":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da assinatura do participante"},"affiliate_id":{"type":"integer","format":"int32","description":"ID do participante"},"amount":{"type":"number","description":"Fração do valor da assinatura referente ao participante"},"amount_type":{"type":"integer","format":"int32","description":"Tipo de valor da assinatura, onde 1 representa uma quantia fixa (amount) e 2 representa a porcentagem (percentage)"},"status":{"type":"string","description":"Status do participante em uma assinatura"},"remove":{"type":"boolean","description":"Flag de remoção de um participante"}}},"putV1Subscriptions":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com os novos atributos da assinatura."},"code":{"type":"string","description":"Código externo para referência via API"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"installments":{"type":"integer","format":"int32","description":"Parcelamento da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"billing_trigger_type":{"type":"string","description":"Referência para data de geração da cobrança","enum":["beginning_of_period","end_of_period","day_of_month"]},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança."},"metadata":{"type":"object","description":"Metadados da assinatura","enum":"metadata"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à assinatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomendável)"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada. Indica se uma nota fiscal será emitida de acordo com a periodicidade do plano (`true`). Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"subscription_affiliates":{"type":"array","description":"Lista de participantes da assinatura. Este campo é exclusivo para transaçõesque utilizaram a regra de split de pagamento e os participantes estejam ativos.","items":{"$ref":"#/definitions/SubscriptionAffiliate::Parameters::Update"}}},"required":["payment_method_code"],"description":"Atualiza uma assinatura existente."},"Subscription::Parameters::Create":{"type":"object","properties":{"start_at":{"type":"string","description":"Data do início da assinatura no formato ISO 8601. Use nulo na criação para início imediato"},"plan_id":{"type":"integer","format":"int32","description":"ID do plano"},"customer_id":{"type":"integer","format":"int32","description":"ID do cliente"},"code":{"type":"string","description":"Código externo para referência via API"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"installments":{"type":"integer","format":"int32","description":"Parcelamento da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"billing_trigger_type":{"type":"string","enum":["beginning_of_period","end_of_period","day_of_month"],"description":"Referência para data de geração da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos da assinatura. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"metadata":{"type":"object","description":"Metadados da assinatura"},"product_items":{"type":"array","items":{"$ref":"#/definitions/ProductItem::Parameters::CreateSubscription"},"description":"Lista de itens incluídos na assinatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à assinatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomendável)"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada. Indica se uma nota fiscal será emitida de acordo com a periodicidade do plano (`true`). Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"subscription_affiliates":{"type":"array","items":{"$ref":"#/definitions/SubscriptionAffiliate::Parameters::Create"},"description":"Lista de participantes da assinatura. Este campo é exclusivo para transaçõesque utilizaram a regra de split de pagamento e os participantes estejam ativos."}},"required":["plan_id","customer_id","payment_method_code"]},"ProductItem::Parameters::CreateSubscription":{"type":"object","properties":{"product_id":{"type":"integer","format":"int32","description":"ID do produto associado"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do produto incluído na assinatura. Se não for informado, o valor '1' será utilizado"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do item. Informe apenas se quiser customizar a precificação padrão"},"discounts":{"type":"array","items":{"$ref":"#/definitions/Discount::Parameters::CreateSubscription"},"description":"Lista de descontos"}},"required":["product_id"]},"Discount::Parameters::CreateSubscription":{"type":"object","properties":{"discount_type":{"type":"string","enum":["percentage","amount","quantity"],"description":"Tipo do desconto"},"percentage":{"type":"number","description":"Valor numérico para porcentagem de 0.01 até 100"},"amount":{"type":"number","description":"Valor para desconto fixo"},"quantity":{"type":"integer","format":"int32","description":"Número para desconto por quantidade"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o desconto será aplicado a partir do momento de sua criação. Nulo significa desconto por tempo indefinido"}},"required":["discount_type"]},"SubscriptionAffiliate::Parameters::Create":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do participante na assinatura"},"affiliate_id":{"type":"integer","format":"int32","description":"ID do participante"},"amount":{"type":"number","description":"Fração do valor da assinatura referente ao participante"},"amount_type":{"type":"integer","format":"int32","description":"Tipo de valor da assinatura, onde 1 representa uma quantia fixa (amount) e 2 representa a porcentagem (percentage)"},"status":{"type":"string","description":"Status do participante em uma assinatura"}}},"postV1Subscriptions":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos da nova assinatura."},"start_at":{"type":"string","description":"Data do início da assinatura no formato ISO 8601. Use nulo na criação para início imediato"},"plan_id":{"type":"integer","format":"int32","description":"ID do plano"},"customer_id":{"type":"integer","format":"int32","description":"ID do cliente"},"code":{"type":"string","description":"Código externo para referência via API"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"installments":{"type":"integer","format":"int32","description":"Parcelamento da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"billing_trigger_type":{"type":"string","description":"Referência para data de geração da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano","enum":["beginning_of_period","end_of_period","day_of_month"]},"billing_trigger_day":{"type":"integer","format":"int32","description":"Dia para geração da cobrança. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"billing_cycles":{"type":"integer","format":"int32","description":"Número máximo de períodos da assinatura. Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"metadata":{"type":"object","description":"Metadados da assinatura","enum":"metadata"},"product_items":{"type":"array","description":"Lista de itens incluídos na assinatura","items":{"$ref":"#/definitions/ProductItem::Parameters::CreateSubscription"}},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à assinatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomendável)"},"invoice_split":{"type":"boolean","description":"Nota fiscal fracionada. Indica se uma nota fiscal será emitida de acordo com a periodicidade do plano (`true`). Deve ser informado apenas se você desejar sobrescrever a configuração herdada do plano"},"subscription_affiliates":{"type":"array","description":"Lista de participantes da assinatura. Este campo é exclusivo para transaçõesque utilizaram a regra de split de pagamento e os participantes estejam ativos.","items":{"$ref":"#/definitions/SubscriptionAffiliate::Parameters::Create"}}},"required":["plan_id","customer_id","payment_method_code"],"description":"Cria uma nova assinatura."},"Subscription::Response::Create":{"type":"object","properties":{"subscription":{"$ref":"#/definitions/Subscription","description":"Assinatura"},"bill":{"$ref":"#/definitions/Bill::Subscription","description":"Fatura criada, se existir"}},"required":["subscription"],"description":"Este método irá criar uma assinatura e obrigatoriamente retornar o objeto `subscription`. Se os parâmetros do plano indicarem uma cobrança imediata, o retorno da mesma requisição também irá conter os detalhes da fatura emitida, representada pelo objeto `bill`. Dentro deste objeto você poderá encontrar informações mais detalhadas sobre o processamento da transação (`last_transaction`).\n\n#### Exemplo de requisição\n\n```\n  {\n    \"plan_id\": 12,\n    \"customer_id\": 142,\n    \"payment_method_code\": \"credit_card\",\n    \"product_items\": [\n      { \"product_id\": 14 }\n    ]\n  }\n```\n\nPara mais detalhes e possibilidades de customização, consulte abaixo a seção **Parâmetros**.\n\n#### Método de pagamento\n\nPara uma lista dos métodos de pagamento disponíveis e seus respectivos códigos, consulte o serviço `GET payment_methods`.\n\nA plataforma tomará uma ação diferente dependendo do método de pagamento informado através do parâmetro `payment_method_code`. Caso o método exija, por exemplo, os dados do cartão de crédito do cliente, a plataforma irá verificar se o cliente em questão possui um cartão válido. Se possuir, uma tentativa de cobrança será efetuada. Se não possuir, um e-mail será enviado ao cliente solicitando seus dados de pagamento.\n\nCaso a forma de pagamento não exija nenhum dado adicional, um e-mail será enviado ao cliente. Boletos bancários possuem exatamente este comportamento.\n\n#### Produtos da assinatura\n\nPor padrão, a lista de itens da nova assinatura herdará as configurações de itens do plano informado via `plan_id`.\n\nCaso seja necessário, também é possível customizar esta lista de itens no momento da criação da assinatura através do array `product_items`. Através deste array de objetos é possível definir quais serão os produtos (`product_id`), quantidades (`quantity`) e o número de períodos (`cycles`) onde cada produto deverá será aplicado. Este atributo é especialmente útil para definir condições específicas que fogem das condições normais de precificação que você definiu no plano.\n\n#### Customização da precificação\n\nCaso o atributo `pricing_schema` não seja informado no `product_item`, a plataforma irá assumir a precificação padrão do produto. Se quiser customizar a precificação exclusivamente para esta assinatura, é possível informar o atributo `pricing_schema` com os parâmetros descritos abaixo. Mais detalhes sobre a precificação de produtos podem ser encontrados [neste artigo](http://atendimento.vindi.com.br/hc/pt-br/articles/203303380).\n\n#### Descontos\n\nCada produto da assinatura poderá receber um ou mais descontos que serão utilizados no cálculo da geração das faturas. Informe o atributo `discounts` para `product_item`. Caso mais de um desconto seja informado para o mesmo produto, os valores serão sempre calculados a partir do valor inicial.\n\n#### Tratamento de assinaturas com pagamentos rejeitados\n\nConforme mencionado anteriormente, a plataforma irá retornar a fatura gerada (`bill`) caso a assinatura possua uma cobrança imediata. Se este retorno possuir uma fatura pendente (`\"status\": \"pending\"`) e uma transação rejeitada, você terá as seguintes opções:\n\n- **Manter a assinatura ativa** e aguardar a retentativa automática da plataforma na data indicada pelo atributo `next_attempt`.\n- **Efetuar uma nova tentativa** de cobrança através do método `POST /charges/{id}/charge`. Opcionalmente você poderá informar um novo perfil de pagamento.\n- **Cancelar a assinatura e a fatura pendente** através do método `DELETE /subscriptions/{id}?cancel_bills=true`.\n- **Enviar um e-mail** com um link para a tela de pagamento da fatura. Este e-mail poderá ser enviado automaticamente pelas notificações da plataforma (cobrança rejeitada) ou se preferir, manualmente através do seu próprio backend. Neste caso, use o endereço contido no atributo `url` do objeto `bill`.\n"},"Bill::Subscription":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da fatura"},"code":{"type":"string","description":"Código externo para referência via API"},"amount":{"type":"number","description":"Valor da fatura"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas"},"status":{"type":"string","enum":["review","pending","paid","canceled","scheduled"],"description":"Status da fatura"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança"},"due_at":{"type":"string","description":"Data vencimento da fatura"},"url":{"type":"string","description":"URL para pagamento da fatura"},"created_at":{"type":"string","description":"Data e hora da geração da fatura"},"charges":{"type":"array","items":{"$ref":"#/definitions/BillCharge"},"description":"Cobranças da fatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Summary","description":"Perfil de pagamento associada à fatura. Este atributo permancerá nulo caso nenhum perfil de pagamento esteja explicitamente associado à fatura."}},"required":["id","amount","installments","status","url","created_at"]},"BillCharge":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da cobrança"},"amount":{"type":"number","description":"Valor da cobrança"},"interest":{"type":"string"},"status":{"type":"string","enum":["pending","paid","canceled","processing","fraud_review"],"description":"Status da cobrança"},"due_at":{"type":"string","description":"Data do vencimento da cobrança"},"paid_at":{"type":"string","description":"Data do pagamento da cobrança, apenas se a cobrança já foi paga"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas da cobrança. Valores acima de 1 são usados apenas para parcelamento através da administradora do cartão de crédito"},"attempt_count":{"type":"integer","format":"int32","description":"Número de tentativas automáticas de cobrança já realizadas"},"next_attempt":{"type":"integer","format":"int32","description":"Data da próxima tentativa automática de cobrança"},"print_url":{"type":"string","description":"URL para impressão da cobrança. Usado apenas para boletos"},"created_at":{"type":"string","description":"Data e hora da geração da cobrança"},"updated_at":{"type":"string","description":"Data e hora da última atualização da cobrança"},"last_transaction":{"$ref":"#/definitions/Transaction::Summary","description":"Última transação realizada da cobrança"},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento da cobrança"}},"required":["id","amount","status","due_at","installments","created_at","updated_at","last_transaction","payment_method"]},"Transaction::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da transação"},"transaction_type":{"type":"string","enum":["charge","refund","authorization","capture","verify","register","void","renew_payment_profile","pre_authorization","update","create_link","revoke_authorization"],"description":"Tipo da transação"},"status":{"type":"string","enum":["processing","success","rejected","failure","timeout","waiting","canceled","fraud_review"],"description":"Status da transação"},"amount":{"type":"number","description":"Valor da transação"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas"},"gateway_message":{"type":"string","description":"Mensagem de resposta do gateway"},"gateway_response_code":{"type":"string","description":"Código de resposta do gateway"},"gateway_authorization":{"type":"string","description":"Código da autorização usado no estorno ou captura. Varia de acordo com o adquirente"},"gateway_transaction_id":{"type":"string","description":"Código externo de referência do gateway. Para boletos, representa o \"nosso número\""},"gateway_response_fields":{"type":"hash","description":"Atributos de resposta específicos do gateway"},"fraud_detector_score":{"type":"number","description":"Pontuação da análise antifraude entre 0.00 e 1.00. Quanto maior a pontuação, maior o risco de fraude"},"fraud_detector_status":{"type":"string","enum":["automatic_success","manual_success","automatic_rejected","manual_rejected","review","failure"],"description":"Status da análise antifraude"},"fraud_detector_id":{"type":"string","description":"ID da análise antifraude"},"created_at":{"type":"string","description":"Data e hora da transação"},"gateway":{"$ref":"#/definitions/Gateway::Summary","description":"Gateway usado na transação"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Summary","description":"Perfil de pagamento usado na transação"}},"required":["id","transaction_type","status","amount","installments","gateway_message","gateway_response_code","gateway_authorization","gateway_transaction_id","created_at","gateway","payment_profile"]},"Gateway::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do gateway"},"connector":{"type":"string","description":"Conector utilizado no gateway"}},"required":["id","connector"]},"ProductItem::Parameters::Update":{"type":"object","properties":{"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do item"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do produto incluído na assinatura. Se não for informado, o valor '1' será utilizado"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do item. Informe apenas se quiser customizar a precificação padrão"}},"required":["status"]},"putV1ProductItems":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com novos atributos do item."},"status":{"type":"string","description":"Status do item","enum":["active","inactive","deleted"]},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do produto incluído na assinatura. Se não for informado, o valor '1' será utilizado"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do item. Informe apenas se quiser customizar a precificação padrão"}},"required":["status"],"description":"Atualiza um item existente."},"ProductItem::Parameters::Create":{"type":"object","properties":{"product_id":{"type":"integer","format":"int32","description":"ID do produto associado"},"subscription_id":{"type":"integer","format":"int32","description":"ID da assinatura existente"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do produto incluído na assinatura. Se não for informado, o valor '1' será utilizado"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do item. Informe apenas se quiser customizar a precificação padrão"}},"required":["product_id","subscription_id"]},"postV1ProductItems":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo item."},"product_id":{"type":"integer","format":"int32","description":"ID do produto associado"},"subscription_id":{"type":"integer","format":"int32","description":"ID da assinatura existente"},"cycles":{"type":"integer","format":"int32","description":"Número de ciclos de recorrência onde o produto será aplicado a partir do momento de sua criação. Nulo significa duração ilimitada"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do produto incluído na assinatura. Se não for informado, o valor '1' será utilizado"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do item. Informe apenas se quiser customizar a precificação padrão"}},"required":["product_id","subscription_id"],"description":"Cadastra um novo item em uma assinatura existente."},"Period::Parameters::Update":{"type":"object","properties":{"billing_at":{"type":"string","description":"Data para geração automática da cobrança do período"},"end_at":{"type":"string","description":"Data do término do período"}}},"putV1Periods":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com os novos atributos do período."},"billing_at":{"type":"string","description":"Data para geração automática da cobrança do período"},"end_at":{"type":"string","description":"Data do término do período"}},"description":"Atualiza um período existente."},"Period":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do período"},"billing_at":{"type":"string","description":"Data para geração automática da cobrança do período"},"cycle":{"type":"integer","format":"int32","description":"Ciclo do período"},"start_at":{"type":"string","description":"Data e hora do início do período"},"end_at":{"type":"string","description":"Data e hora do término do período"},"duration":{"type":"integer","format":"int32","description":"Duração do período em número de segundos"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente do período"},"subscription":{"$ref":"#/definitions/Subscription::Summary","description":"Assinatura relacionada ao período"},"usages":{"type":"array","items":{"$ref":"#/definitions/Usage"},"description":"Lista de registros de utilização no período"},"created_at":{"type":"string","description":"Data e hora da geração do período"},"updated_at":{"type":"string","description":"Data e hora da última atualização do período"}},"required":["id","cycle","start_at","end_at","duration","created_at","updated_at"],"description":"Uma assinatura deve possuir obrigatoriamente um ou mais períodos, que são gerados automaticamente conforme a configuração de cobrança e periodicidade da assinatura. Em uma assinatura baseada em um plano mensal, cada período terá a duração de aproximadamente 30 dias.\n\n#### Registros de utilização\nTodo período deverá possuir um ou mais registros de utilização. A fatura do período será gerada a partir destes registros de utilização.\n\nPara produtos configurados com preço fixo ou preço por quantidade, a plataforma irá criar automaticamente um registro de utilização conforme a quantidade indicada na assinatura. Para produtos com preços baseados no volume, nenhum registro será criado automaticamente e o período aguardará obrigatoriamente a informação do registro de utilização. A inclusão do registro pode ser feita através do painel de administração ou pela API.\n\n#### Fatura\nNormalmente um período possuirá uma única fatura que será gerada automaticamente na data `billing_at`, porém em casos especiais um período poderá possuir mais de uma fatura.\n"},"Subscription::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da assinatura"},"code":{"type":"string","description":"Código externo para referência via API"},"plan":{"$ref":"#/definitions/Plan::Summary","description":"Plano da assinatura"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente da assinatura"}},"required":["id","plan","customer"]},"Usage":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do registro de utilização"},"description":{"type":"string","description":"Descrição opcional"},"created_at":{"type":"string","description":"Data e hora da geração do registro de utilização"},"metadata":{"type":"object","description":"Metadados do registro de utilização"},"product_item":{"$ref":"#/definitions/ProductItem::Summary","description":"Item da assinatura relacionado ao registro de utilização"},"bill":{"$ref":"#/definitions/Bill::Summary","description":"Fatura relacionada ao registro de utilização"},"quantity":{"type":"integer","format":"int32","description":"Quantidade informada no registro de utilização"}},"required":["id","created_at","product_item","quantity"],"description":"Para criar um novo registro de utilização em um período é necessário informar um dos produtos contidos na assinatura. Isso pode ser feito através do atributo `product_id` (ID do produto) ou `product_item_id` (ID do item da assinatura).\n\n  Ao remover um registro com sucesso, o próprio será retornado no corpo da resposta.\n"},"Bill::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da fatura"},"code":{"type":"string","description":"Código externo para referência via API"}},"required":["id"]},"Period::List":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do período"},"billing_at":{"type":"string","description":"Data para geração automática da cobrança do período"},"cycle":{"type":"integer","format":"int32","description":"Ciclo do período"},"start_at":{"type":"string","description":"Data e hora do início do período"},"end_at":{"type":"string","description":"Data e hora do término do período"},"duration":{"type":"integer","format":"int32","description":"Duração do período em número de segundos"},"subscription":{"$ref":"#/definitions/Subscription::Summary","description":"Assinatura relacionada ao período"},"created_at":{"type":"string","description":"Data e hora da geração do período"},"updated_at":{"type":"string","description":"Data e hora da última atualização do período"}},"required":["id","cycle","start_at","end_at","duration","created_at","updated_at"],"description":"Utilize este método para listar os períodos associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ebilling_at\u003c/code\u003e, \u003ccode\u003esubscription_id\u003c/code\u003e, \u003ccode\u003estart_at\u003c/code\u003e, \u003ccode\u003eend_at\u003c/code\u003e, \u003ccode\u003ecycle\u003c/code\u003e, \u003ccode\u003eduration\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n"},"Bill":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da fatura"},"code":{"type":"string","description":"Código externo para referência via API"},"amount":{"type":"number","description":"Valor da fatura"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas"},"status":{"type":"string","enum":["review","pending","paid","canceled","scheduled"],"description":"Status da fatura"},"seen_at":{"type":"string","description":"Última visualização da fatura"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança"},"due_at":{"type":"string","description":"Data de vencimento da fatura"},"url":{"type":"string","description":"URL para pagamento da fatura"},"created_at":{"type":"string","description":"Data e hora da geração da fatura"},"updated_at":{"type":"string","description":"Data e hora da última atualização da fatura"},"bill_items":{"type":"array","items":{"$ref":"#/definitions/BillItem"},"description":"Itens da fatura.\n              Este atributo exibe os primeiros 25 itens.\n              Para os demais, consulte o método `GET /bills/:id/bill_items`"},"charges":{"type":"array","items":{"$ref":"#/definitions/BillCharge"},"description":"Cobranças da fatura"},"bill_affiliates":{"type":"array","items":{"$ref":"#/definitions/BillAffiliate::Response::Full"},"description":"Lista de participantes da fatura. Este campo é exclusivo para transaçõesque contenham participantes ativos. Os participantes dividem o valorda fatura com a empresa"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente da fatura"},"period":{"$ref":"#/definitions/Period::Summary","description":"Período da fatura. Este atributo permancerá nulo em faturas avulsas"},"subscription":{"$ref":"#/definitions/Subscription::Summary","description":"Assinatura associada à fatura. Este atributo permancerá nulo em faturas avulsas"},"metadata":{"type":"object","description":"Metadados da fatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Summary","description":"Perfil de pagamento associada à fatura. Este atributo permancerá nulo casonenhum perfil de pagamento esteja explicitamente associado à fatura."},"payment_condition":{"$ref":"#/definitions/PaymentCondition","description":"Condição de pagamento associada à fatura.\nEste atributo permancerá nulo caso nenhuma condição de pagamento\nesteja explicitamente associada à fatura.\n"}},"required":["id","amount","installments","status","seen_at","url","created_at","updated_at"],"description":"Utilize este método para listar as faturas associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003eperiod_id\u003c/code\u003e, \u003ccode\u003esubscription_id\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003eamount\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003eseen_at\u003c/code\u003e, \u003ccode\u003edue_at\u003c/code\u003e, \u003ccode\u003ebilling_at\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n\n#### Itens da fatura\n\nUma fatura é composta de vários itens representados no array `bill_items`. Este endpoint lista apenas os 25 primeiros itens de cada fatura. Caso queira listar mais itens de uma fatura, utilize o método da API `GET /bills/{id}/bill_items`.\n"},"BillItem":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do item da fatura"},"amount":{"type":"number","description":"Valor do item da fatura"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do item da fatura"},"pricing_range_id":{"type":"integer","format":"int32","description":"ID da faixa de precificação usada no cálculo do preço, se aplicável"},"description":{"type":"string","description":"Descrição opcional do item da fatura"},"pricing_schema":{"$ref":"#/definitions/PricingSchema","description":"Precificação aplicada ao item da fatura"},"product":{"$ref":"#/definitions/Product::Summary","description":"Produto associado ao item"},"product_item":{"$ref":"#/definitions/ProductItem::Summary","description":"Detalhes do item associado à assinatura. Não é informado em faturas avulsas"},"discount":{"$ref":"#/definitions/Discount::Summary","description":"Desconto associado ao item da fatura, se existente"}},"required":["id","amount","product"],"description":"Utilize este método para listar os itens associados a uma fatura. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination).\n"},"BillAffiliate::Response::Full":{"type":"object","properties":{"affiliate_id":{"type":"integer","format":"int32","description":"ID do participante"},"amount":{"type":"string","description":"Valor da fatura"},"amount_type":{"type":"string","description":"Tipo de valor da fatura"}}},"PaymentCondition":{"type":"object","properties":{"penalty_fee_value":{"type":"number","description":"Valor da multa"},"penalty_fee_type":{"type":"string","description":"Tipo da multa"},"daily_fee_value":{"type":"number","description":"Valor dos juros ao dia"},"daily_fee_type":{"type":"string","description":"Tipo dos juros ao dia"},"after_due_days":{"type":"integer","format":"int32","description":"Prazo para pagamento após vencimento"},"payment_condition_discounts":{"type":"array","items":{"$ref":"#/definitions/PaymentConditionDiscount"},"description":"Desconto de pontualidade"}},"required":["penalty_fee_value","penalty_fee_type","daily_fee_value","daily_fee_type","after_due_days","payment_condition_discounts"]},"PaymentConditionDiscount":{"type":"object","properties":{"value":{"type":"number","description":"Valor"},"value_type":{"type":"string","enum":["percentage","amount"],"description":"Tipo"},"days_before_due":{"type":"integer","format":"int32","description":"Dias antes do vencimento"}},"required":["value","value_type","days_before_due"]},"Bill::Parameters::Update":{"type":"object","properties":{"code":{"type":"string","description":"Código externo para referência via API"},"payment_method_code":{"type":"string","description":"Código do método de pagamento. Se não informado, o método atual será utilizado"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor atual será utilizado"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança no formato ISO 8601. Apenas para faturas agendadas"},"due_at":{"type":"string","description":"Data opcional de vencimento da cobrança no formato ISO 8601. Apenas para faturas agendadas"},"metadata":{"type":"object","description":"Metadados da fatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à fatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomedável)"}}},"putV1Bills":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com os novos atributos da fatura."},"code":{"type":"string","description":"Código externo para referência via API"},"payment_method_code":{"type":"string","description":"Código do método de pagamento. Se não informado, o método atual será utilizado"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor atual será utilizado"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança no formato ISO 8601. Apenas para faturas agendadas"},"due_at":{"type":"string","description":"Data opcional de vencimento da cobrança no formato ISO 8601. Apenas para faturas agendadas"},"metadata":{"type":"object","description":"Metadados da fatura","enum":"metadata"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à fatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomedável)"}},"description":"Atualiza uma fatura existente."},"Invoice":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da nota fiscal"},"amount":{"type":"number","description":"Valor da nota fiscal"},"status":{"type":"string","enum":["processing","success","failure","canceled","waiting","processing_cancel","cancel_failure","scheduled"],"description":"Status da nota fiscal"},"integration_invoice_id":{"type":"string","description":"Código externo da integração"},"integration_reference":{"type":"string","description":"Número ou referência da nota fiscal na instituição governamental"},"print_url":{"type":"string","description":"URL para impressão da nota fiscal"},"description":{"type":"string","description":"Descrição usada para a geração nota fiscal. Se não informada, a configuração padrão da integração será usada"},"settings":{"$ref":"#/definitions/Invoice::Settings::Parameters","description":"Configurações adicionais usadas na integração. Os campos disponíveis variam conforme a integração configurada."},"issued_at":{"type":"string","description":"Data e hora da emissão da nota fiscal"},"accrued_on":{"type":"string","description":"Data de competência da nota fiscal"},"scheduled_at":{"type":"string","description":"Data e hora do agendamento da nota fiscal"},"created_at":{"type":"string","description":"Data e hora da geração da nota fiscal"},"updated_at":{"type":"string","description":"Data e hora da última atualização da nota fiscal"},"bill":{"$ref":"#/definitions/Bill::Summary","description":"Fatura que gerou a nota fiscal"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente da nota fiscal"}},"required":["id","amount","status","integration_invoice_id","integration_reference","created_at","updated_at","bill","customer"],"description":"Utilize este método para listar as notas fiscais associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ebill_id\u003c/code\u003e, \u003ccode\u003eintegration_id\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003eintegration_invoice_id\u003c/code\u003e, \u003ccode\u003eintegration_reference\u003c/code\u003e, \u003ccode\u003eissued_at\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eintegration_type\u003c/code\u003e.\n"},"Invoice::Settings::Parameters":{"type":"object","properties":{"invoice_code":{"type":"string","description":"Código da nota fiscal (usado na integração NFe.io)"},"invoice_type":{"type":"string","description":"Tipo da nota fiscal (usado na integração NFe.io)"},"nbs_code":{"type":"string","description":"Código NBS (usado na integração NFe.io)"},"federal_service_code":{"type":"string","description":"Código do serviço federal (usado na integração NFe.io)"},"operation_indicator":{"type":"string","description":"Indicador de operação (usado na integração NFe.io)"},"class_code":{"type":"string","description":"Código de classificação (usado na integração NFe.io)"}}},"Bill::Parameters::Charge":{"type":"object","properties":{"payment_method_code":{"type":"string","description":"Código do método de pagamento. Se não informado, o método atual será utilizado"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor atual será utilizado"}}},"postV1BillsIdCharge":{"type":"object","properties":{"body":{"type":"Charge","description":"JSON opcional com os atributos da fatura."},"payment_method_code":{"type":"string","description":"Código do método de pagamento. Se não informado, o método atual será utilizado"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor atual será utilizado"}},"description":"Antecipa imediatamente a cobrança de uma fatura através do ID."},"Bill::Parameters::Create":{"type":"object","properties":{"customer_id":{"type":"integer","format":"int32","description":"ID do cliente"},"code":{"type":"string","description":"Código externo para referência via API"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor '1' será utilizado"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança no formato ISO 8601. Se não informada, a cobrança será imediata"},"due_at":{"type":"string","description":"Data opcional de vencimento da cobrança no formato ISO 8601. Se não informada, o vencimento padrão será utilizado"},"brand_tid":{"type":"string","description":"Código identificador da transação na respectiva bandeira"},"bill_items":{"type":"array","items":{"$ref":"#/definitions/BillItem::Parameters::Create"},"description":"Lista de itens da fatura"},"bill_affiliates":{"type":"array","items":{"$ref":"#/definitions/BillAffiliate::Parameters::Create"},"description":"Lista de participantes da fatura. Este campo é exclusivo para transaçõesque contenham participantes ativos. Os participantes dividem o valorda fatura com a empresa"},"metadata":{"type":"object","description":"Metadados da fatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à fatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomedável)"},"payment_condition":{"$ref":"#/definitions/PaymentCondition::Parameters::Create","description":"Condição de pagamento. Se não informada, a condição do método de pagamento será utilizada (recomendável)"},"customer":{"$ref":"#/definitions/Bill::Parameters::CustomerData","description":"Dados do comprador para análise de antifraude"},"fingerprint":{"type":"string"},"device":{"$ref":"#/definitions/Device::Parameters::Create","description":"Informações sobre o dispositivo do usuário."}},"required":["customer_id","payment_method_code","bill_items"]},"BillItem::Parameters::Create":{"type":"object","properties":{"product_id":{"type":"number","description":"ID do produto associado ao item da fatura"},"product_code":{"type":"string","description":"Código do produto associado ao item da fatura"},"amount":{"type":"number","description":"Valor do item da fatura"},"description":{"type":"string","description":"Descrição opcional do item da fatura"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do item da fatura"},"pricing_schema":{"$ref":"#/definitions/PricingSchema::Parameters","description":"Esquema de precificação do item. Informe apenas se quiser customizar a exibição da precificação"}},"required":["amount"]},"BillAffiliate::Parameters::Create":{"type":"object","properties":{"affiliate_id":{"type":"integer","format":"int32","description":"ID do participante"},"amount":{"type":"number","description":"Valor da fatura"},"amount_type":{"type":"integer","format":"int32","description":"Tipo de valor da fatura"}}},"PaymentCondition::Parameters::Create":{"type":"object","properties":{"penalty_fee_value":{"type":"number","description":"Valor da multa"},"penalty_fee_type":{"type":"string","description":"Tipo da multa"},"daily_fee_value":{"type":"number","description":"Valor dos juros ao dia"},"daily_fee_type":{"type":"string","description":"Tipo dos juros ao dia"},"after_due_days":{"type":"integer","format":"int32","description":"Prazo para pagamento após vencimento"},"payment_condition_discounts":{"type":"array","items":{"$ref":"#/definitions/PaymentConditionDiscount::Parameters::Create"},"description":"Desconto de pontualidade"}}},"PaymentConditionDiscount::Parameters::Create":{"type":"object","properties":{"value":{"type":"number","description":"Valor"},"value_type":{"type":"string","enum":["percentage","amount"],"description":"Tipo"},"days_before_due":{"type":"integer","format":"int32","description":"Dias antes do vencimento"}},"required":["value","value_type","days_before_due"]},"Bill::Parameters::CustomerData":{"type":"object","properties":{"customer_ip":{"type":"string","description":"IP do comprador para análise de antifraude (formato IPv4)"}}},"Device::Parameters::Create":{"type":"object","properties":{"color_depth":{"type":"integer","format":"int32","description":"Indica a profundidade de cor estimada da tela do usuário, em bits por pixel. É obtida no navegador do cliente por meio da propriedade window.screen.colorDepth."},"java_enabled":{"type":"boolean","description":"Indica se o navegador do usuário possui suporte para execução de applets Java. É obtida no navegador do cliente por meio da propriedade navigator.javaEnabled."},"language":{"type":"string","description":"Representa o idioma preferido do navegador, no formato IETF BCP 47 (por exemplo, en, pt-BR, fr-FR). Pode ser obtido através da propriedade navigator.language."},"screen_height":{"type":"integer","format":"int32","description":"Representa a altura total da tela do dispositivo do usuário, em pixels. O valor é obtido por meio da propriedade window.screen.height."},"screen_width":{"type":"integer","format":"int32","description":"Representa a largura total da tela do dispositivo do usuário, em pixels. O valor é obtido por meio da propriedade window.screen.width."},"time_zone_offset":{"type":"integer","format":"int32","description":"Diferença de horário, em horas, entre o UTC e a hora local do navegador do titular do cartão."},"user_agent":{"type":"string","description":"Identificador do browser utilizado pelo comprador no momento da compra."},"ip_address":{"type":"string","description":"Suporta informações somente em iPv4. Exemplo: 10.0.0.1"}},"required":["color_depth","java_enabled","language","screen_height","screen_width","time_zone_offset","ip_address"]},"postV1Bills":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos da fatura avulsa."},"customer_id":{"type":"integer","format":"int32","description":"ID do cliente"},"code":{"type":"string","description":"Código externo para referência via API"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor '1' será utilizado"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança no formato ISO 8601. Se não informada, a cobrança será imediata"},"due_at":{"type":"string","description":"Data opcional de vencimento da cobrança no formato ISO 8601. Se não informada, o vencimento padrão será utilizado"},"brand_tid":{"type":"string","description":"Código identificador da transação na respectiva bandeira"},"bill_items":{"type":"array","description":"Lista de itens da fatura","items":{"$ref":"#/definitions/BillItem::Parameters::Create"}},"bill_affiliates":{"type":"array","description":"Lista de participantes da fatura. Este campo é exclusivo para transaçõesque contenham participantes ativos. Os participantes dividem o valorda fatura com a empresa","items":{"$ref":"#/definitions/BillAffiliate::Parameters::Create"}},"metadata":{"type":"object","description":"Metadados da fatura","enum":"metadata"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Parameters::FindOrCreate","description":"Perfil de pagamento associado à fatura. Se não informado, o perfil de pagamento mais recente será utilizado (recomedável)"},"payment_condition":{"$ref":"#/definitions/PaymentCondition::Parameters::Create","description":"Condição de pagamento. Se não informada, a condição do método de pagamento será utilizada (recomendável)"},"customer":{"$ref":"#/definitions/Bill::Parameters::CustomerData","description":"Dados do comprador para análise de antifraude"},"device":{"$ref":"#/definitions/Device::Parameters::Create","description":"Informações sobre o dispositivo do usuário."}},"required":["customer_id","payment_method_code","bill_items"],"description":"Cria uma nova fatura avulsa."},"BillItem::IncludingUsages":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do item da fatura"},"amount":{"type":"number","description":"Valor do item da fatura"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do item da fatura"},"pricing_range_id":{"type":"integer","format":"int32","description":"ID da faixa de precificação usada no cálculo do preço, se aplicável"},"description":{"type":"string","description":"Descrição opcional do item da fatura"},"pricing_schema":{"$ref":"#/definitions/PricingSchema","description":"Precificação aplicada ao item da fatura"},"product":{"$ref":"#/definitions/Product::Summary","description":"Produto associado ao item"},"product_item":{"$ref":"#/definitions/ProductItem::Summary","description":"Detalhes do item associado à assinatura. Não é informado em faturas avulsas"},"discount":{"$ref":"#/definitions/Discount::Summary","description":"Desconto associado ao item da fatura, se existente"},"usages":{"type":"array","items":{"$ref":"#/definitions/Usage::Summary"},"description":"Registros de utilização associados ao item da fatura"}},"required":["id","amount","product"],"description":"Além das informações básicas sobre o item da fatura, através deste método é possível obter todos os registros de utilização associados ao item.\n"},"Usage::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do registro de utilização"},"description":{"type":"string","description":"Descrição opcional"},"created_at":{"type":"string","description":"Data e hora da geração do registro de utilização"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do registro de utilização"},"base_amount":{"type":"integer","format":"int32","description":"Valor base informado no registro de utilização"}},"required":["id","created_at","quantity","base_amount"]},"Charge":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da cobrança"},"amount":{"type":"number","description":"Valor da cobrança"},"interest":{"type":"string"},"status":{"type":"string","enum":["pending","paid","canceled","processing","fraud_review"],"description":"Status da cobrança"},"due_at":{"type":"string","description":"Data do vencimento da cobrança"},"paid_at":{"type":"string","description":"Data do pagamento da cobrança, apenas se a cobrança já foi paga"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas da cobrança. Valores acima de 1 são usados apenas para parcelamento através da administradora do cartão de crédito"},"attempt_count":{"type":"integer","format":"int32","description":"Número de tentativas automáticas de cobrança já realizadas"},"next_attempt":{"type":"integer","format":"int32","description":"Data da próxima tentativa automática de cobrança"},"print_url":{"type":"string","description":"URL para impressão da cobrança. Usado apenas para boletos"},"created_at":{"type":"string","description":"Data e hora da geração da cobrança"},"updated_at":{"type":"string","description":"Data e hora da última atualização da cobrança"},"last_transaction":{"$ref":"#/definitions/Transaction::Summary","description":"Última transação realizada da cobrança"},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento da cobrança"},"bill":{"$ref":"#/definitions/Bill::Summary","description":"Fatura à qual pertence a cobrança"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente à qual pertence a cobrança"}},"required":["id","amount","status","due_at","installments","created_at","updated_at","last_transaction","payment_method","bill","customer"],"description":"Utilize este método para listar as cobranças associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ebill_id\u003c/code\u003e, \u003ccode\u003eamount\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003edue_at\u003c/code\u003e, \u003ccode\u003epaid_at\u003c/code\u003e, \u003ccode\u003einstallments\u003c/code\u003e, \u003ccode\u003eattempt_count\u003c/code\u003e, \u003ccode\u003enext_attempt\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e."},"Charge::Parameters::FraudReview":{"type":"object","properties":{"fraud_review_action":{"type":"string","enum":["approve","reject"],"description":"Ação desejada para revisão"},"comments":{"type":"string","description":"Descrição opcional"}},"required":["fraud_review_action"]},"postV1ChargesIdFraudReview":{"type":"object","properties":{"body":{"type":"FraudReview","description":"JSON com atributos da revisão."},"fraud_review_action":{"type":"string","description":"Ação desejada para revisão","enum":["approve","reject"]},"comments":{"type":"string","description":"Descrição opcional"}},"required":["fraud_review_action"],"description":"Revisa manualmente uma cobrança suspeita de fraude."},"Charge::Parameters::Refund":{"type":"object","properties":{"amount":{"type":"number","description":"Valor do estorno. Se não for informado, o valor total será estornado"},"cancel_bill":{"type":"boolean","description":"Informe se a fatura associada à cobrança será cancelada após o estorno. Se não informado, o valor `false` será utilizado"},"comments":{"type":"string","description":"Descrição opcional"},"affiliates":{"type":"array","items":{"type":"string","enum":[{"affiliate_id":"ID do participante","affiliate_refund":"0"}]},"description":"Estorno de participantes"}}},"postV1ChargesIdRefund":{"type":"object","properties":{"body":{"type":"Refund","description":"JSON com atributos do estorno."},"amount":{"type":"number","description":"Valor do estorno. Se não for informado, o valor total será estornado"},"cancel_bill":{"type":"boolean","description":"Informe se a fatura associada à cobrança será cancelada após o estorno. Se não informado, o valor `false` será utilizado"},"comments":{"type":"string","description":"Descrição opcional"},"affiliates":{"type":"array","description":"Estorno de participantes","items":{"type":"string","enum":[{"affiliate_id":"ID do participante","affiliate_refund":"0"}]}}},"description":"Estorna uma cobrança existente."},"ChargeWithAffiliate":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da cobrança"},"amount":{"type":"number","description":"Valor da cobrança"},"interest":{"type":"string"},"status":{"type":"string","enum":["pending","paid","canceled","processing","fraud_review"],"description":"Status da cobrança"},"due_at":{"type":"string","description":"Data do vencimento da cobrança"},"paid_at":{"type":"string","description":"Data do pagamento da cobrança, apenas se a cobrança já foi paga"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas da cobrança. Valores acima de 1 são usados apenas para parcelamento através da administradora do cartão de crédito"},"attempt_count":{"type":"integer","format":"int32","description":"Número de tentativas automáticas de cobrança já realizadas"},"next_attempt":{"type":"integer","format":"int32","description":"Data da próxima tentativa automática de cobrança"},"print_url":{"type":"string","description":"URL para impressão da cobrança. Usado apenas para boletos"},"created_at":{"type":"string","description":"Data e hora da geração da cobrança"},"updated_at":{"type":"string","description":"Data e hora da última atualização da cobrança"},"last_transaction":{"$ref":"#/definitions/Transaction::Summary","description":"Última transação realizada da cobrança"},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento da cobrança"},"bill":{"$ref":"#/definitions/Bill::SummaryWithAffiliate","description":"Fatura à qual pertence a cobrança"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente à qual pertence a cobrança"}},"required":["id","amount","status","due_at","installments","created_at","updated_at","last_transaction","payment_method","bill","customer"],"description":"Utilize este método para efetuar o estorno (ou cancelamento) de uma cobrança já efetuada com sucesso. É importante observar que não é possível reverter um estorno realizado com sucesso.\n\nApós a operação de estorno, a cobrança assumirá `status=canceled`. O cancelamento da fatura associda é opcional e pode ser informado através da opção `cancel_bill` no corpo da requisição.\n\n#### Estorno total e parcial\n\nA operação de estorno pode ser realizada na totalidade do valor original ou parcialmente, caso seja necessário. É importante observar que nem todas as adquirentes suportam a modalidade de estorno parcial.\n\nPara efetuar o estorno total não é obrigatório informar o parâmetro `amount`.\n\n#### Retorno síncrono e assíncrono\n\nCaso o estorno retorne uma transação (`last_transaction`) contendo o atributo `status=success`, é possível considerar que a operação foi realizada com sucesso e o valor será creditado na fatura do cliente respeitando as regras da adquirente e do banco emissor. Chamamos esta operação de **estorno síncrono**.\n\nEm alguns casos também é possível que a plataforma retorne `status=waiting`. Isto significa que o estorno foi recebido com sucesso, porém ainda depende de um processamento adicional na adquirente. Esta operação é chamada de **estorno assíncrono**. Neste caso, você poderá optar pelo recebimento do webhook \"Cobrança estornada\" (`charge_refunded`) que será enviado assim que a adquirente emitir a confirmação de estorno. O recebimento da confirmação do estorno pode demorar entre alguns minutos até alguns dias.\n\n#### Estorno com afiliados\n\nA API de estorno permite tanto o estorno total quanto parcial de uma cobrança, com suporte a transações que envolvem afiliados (Split de pagamento).\n\n**Tipos de estorno**\n\nCaso seja necessário realizar um estorno de uma transação com Split, existem duas formas de operação:\n\n**Estorno total**: o valor integral da cobrança será estornado, e o `master`(Conta principal) será responsável por todo o valor. Neste caso, não é necessário informar afiliados no corpo da requisição.\n\n**Estorno parcial**: permite informar afiliados que participaram da transação. O estorno será aplicado sobre o saldo recebido por cada afiliado indicado.\n\nApenas é permitido estornar até o valor que o afiliado recebeu na transação.\n\nExemplo: se um afiliado recebeu R$ 10, o valor máximo possível de estorno para ele será R$ 10.\n\nAo realizar um estorno parcial, utilize o campo `affiliates` no corpo da requisição. O valor informado em `affiliate_refund` deve ser maior que zero e menor ou igual aos valores recebidos\n\nPara o envio de múltiplos participantes no estorno é da seguinte forma `\"affiliates\": [{\"affiliate_id\": \"ID do participante\", \"affiliate_refund\": \"1\"}, {\"affiliate_id\": \"ID do participante\", \"affiliate_refund\": \"1\"}, ...]`\n"},"Bill::SummaryWithAffiliate":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da fatura"},"code":{"type":"string","description":"Código externo para referência via API"},"bill_affiliates":{"type":"array","items":{"$ref":"#/definitions/BillAffiliate::Response::Full"},"description":"Lista de participantes da fatura. Este campo é exclusivo para transações que contenham participantes ativos. Os participantes dividem o valor da fatura com a empresa"}},"required":["id"]},"postV1ChargesIdCharge":{"type":"object","properties":{"body":{"type":"FindOrCreate","description":"JSON opcional com atributos do novo perfil de pagamento. Se não informado, o perfil de pagamento padrão será utilizado"},"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number":{"type":"string","description":"Número completo do cartão de crédito"},"card_cvv":{"type":"string","description":"Código de segurança do cartão de crédito com 3 ou 4 dígitos"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código do banco ou bandeira"},"gateway_token":{"type":"string","description":"Token externo"}},"description":"Efetua uma nova tentativa em uma cobrança existente."},"Charge::Parameters::Reissue":{"type":"object","properties":{"payment_method_code":{"type":"string","description":"Código do novo método de pagamento"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"},"comments":{"type":"string","description":"Descrição opcional"}},"required":["payment_method_code"]},"postV1ChargesIdReissue":{"type":"object","properties":{"body":{"type":"Reissue","description":"JSON com atributos da nova cobrança."},"payment_method_code":{"type":"string","description":"Código do novo método de pagamento"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"},"comments":{"type":"string","description":"Descrição opcional"}},"required":["payment_method_code"],"description":"Reemite uma cobrança existente usando outro método de pagamento."},"Charge::Parameters::Update":{"type":"object","properties":{"due_at":{"type":"string","description":"Data do vencimento da cobrança"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"}}},"putV1Charges":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com os novos atributos da cobrança."},"due_at":{"type":"string","description":"Data do vencimento da cobrança"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não for informado, o valor '1' será utilizado"}},"description":"Atualiza uma cobrança existente."},"Transaction::Parameters::Update":{"type":"object","properties":{"gateway_transaction_id":{"type":"string","description":"ID do gateway remoto"}},"required":["gateway_transaction_id"]},"putV1Transactions":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com os novos atributos da transação."},"gateway_transaction_id":{"type":"string","description":"ID do gateway remoto"}},"required":["gateway_transaction_id"],"description":"Atualiza uma transação existente."},"Transaction":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da transação"},"transaction_type":{"type":"string","enum":["charge","refund","authorization","capture","verify","register","void","renew_payment_profile","pre_authorization","update","create_link","revoke_authorization"],"description":"Tipo da transação"},"status":{"type":"string","enum":["processing","success","rejected","failure","timeout","waiting","canceled","fraud_review"],"description":"Status da transação"},"amount":{"type":"number","description":"Valor da transação"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas"},"gateway_message":{"type":"string","description":"Mensagem de resposta do gateway"},"gateway_response_code":{"type":"string","description":"Código de resposta do gateway"},"gateway_authorization":{"type":"string","description":"Código da autorização usado no estorno ou captura. Varia de acordo com o adquirente"},"gateway_transaction_id":{"type":"string","description":"Código externo de referência do gateway. Para boletos, representa o \"nosso número\""},"gateway_response_fields":{"type":"hash","description":"Atributos de resposta específicos do gateway"},"fallback_type":{"type":"string","description":"Tipo de Retentativa"},"fraud_detector_score":{"type":"number","description":"Pontuação da análise antifraude entre 0.00 e 1.00. Quanto maior a pontuação, maior o risco de fraude"},"fraud_detector_status":{"type":"string","enum":["automatic_success","manual_success","automatic_rejected","manual_rejected","review","failure"],"description":"Status da análise antifraude"},"fraud_detector_id":{"type":"string","description":"ID da análise antifraude"},"created_at":{"type":"string","description":"Data e hora da transação"},"updated_at":{"type":"string","description":"Data e hora da última atualização da transação"},"gateway":{"$ref":"#/definitions/Gateway::Summary","description":"Gateway usado na transação"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Summary","description":"Perfil de pagamento usado na transação"},"charge":{"$ref":"#/definitions/Charge::Summary","description":"Cobrança que gerou esta transação"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente da transação"},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento da transação"}},"required":["id","transaction_type","status","amount","installments","gateway_message","gateway_response_code","gateway_authorization","gateway_transaction_id","fallback_type","created_at","updated_at","gateway","payment_profile","charge","customer","payment_method"],"description":"Este método permite verificar se um perfil de pagamento existente é válido na entidade emissora. Apenas o método de pagamento cartão de crédito suporta esta operação.\n\nUtilize esta função para validar um perfil de pagamento antes da criação de uma assinatura que não possua cobrança imediata. Este método é desnecessário para assinaturas com cobrança imediata.\n\n#### Funcionamento\nPreferencialmente a plataforma Vindi irá executar o método de validação fornecido nativamente pelas adquirentes. Caso este método não esteja disponível, a plataforma poderá realizar uma autorização seguida de um cancelamento.\n\n#### Resultado\nPara verificar o resultado da validação, verifique no retorno se `status=success`.\n\n#### Disponibilidade\nEsta funcionalidade estará disponível para testes enquanto sua conta Vindi estiver no modo trial. Para habilitar no modo produção, instale a extensão \"Transação de verificação\" acessando ***Configurações \u003e Extensões \u0026 Integrações*** no painel de administração da plataforma. Taxas adicionais por verificação poderão ser cobradas.\n"},"Charge::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da cobrança"}},"required":["id"]},"Transaction::Parameters::Create":{"type":"object","properties":{"charge_id":{"type":"integer","format":"int32","description":"ID da cobrança pendente"},"amount":{"type":"number","description":"Valor da transação"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"paid_at":{"type":"string","description":"Data opcional do pagamento da cobrança no formato ISO 8601. Se não informada, a data atual será utilizada"},"comments":{"type":"string","description":"Descrição opcional"}},"required":["charge_id","amount","payment_method_code"]},"postV1Transactions":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos da nova transação."},"charge_id":{"type":"integer","format":"int32","description":"ID da cobrança pendente"},"amount":{"type":"number","description":"Valor da transação"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"paid_at":{"type":"string","description":"Data opcional do pagamento da cobrança no formato ISO 8601. Se não informada, a data atual será utilizada"},"comments":{"type":"string","description":"Descrição opcional"}},"required":["charge_id","amount","payment_method_code"],"description":"Insere uma nova transação manual."},"PaymentProfile::Parameters::Update":{"type":"object","properties":{"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas.\n            Default: false"}}},"putV1PaymentProfiles":{"type":"object","properties":{"body":{"type":"Update"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas.\n            Default: false"}},"description":"Atualiza um perfil de pagamento existente através do ID."},"PaymentProfile":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do perfil de pagamento"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do perfil de pagamento"},"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number_first_six":{"type":"string","description":"Primeiros 6 dígitos do cartão de crédito (BIN/IIN)"},"card_number_last_four":{"type":"string","description":"Últimos 4 dígitos do cartão de crédito"},"renewed_card":{"type":"object","properties":{"card_number_last_four":{"type":"string","description":"Últimos quatro dígitos do cartão de crédito renovado"},"card_expiration":{"type":"string","description":"Nova validade do cartão de crédito renovado"}}},"card_renewed_at":{"type":"string","description":"Data da renovação do cartão de crédito renovado"},"token":{"type":"string","description":"Token para referência do perfil de pagamento"},"gateway_token":{"type":"string","description":"Token externo"},"type":{"type":"string","description":"Tipo do perfil de pagamento"},"created_at":{"type":"string","description":"Data e hora do cadastro do perfil de pagamento"},"updated_at":{"type":"string","description":"Data e hora da última atualização do perfil de pagamento"},"payment_company":{"$ref":"#/definitions/PaymentCompany","description":"Bandeira ou banco do perfil de pagamento"},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento do perfil de pagamento"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente associado ao perfil de pagamento"}},"required":["id","status","token","type","created_at","updated_at","payment_company","payment_method","customer"],"description":"Utilize este método para listar perfis de pagamento associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Exemplo\nPara verificar se determinado cliente possui um cartão de crédito ativo, utilize os seguintes filtros no parâmetro `query`:\n\n```\ncustomer_id=[id do cliente] status=active type=PaymentProfile::CreditCard\n```\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ecard_number_first_six\u003c/code\u003e, \u003ccode\u003ecard_number_last_four\u003c/code\u003e, \u003ccode\u003ecard_expiration\u003c/code\u003e, \u003ccode\u003epayment_company_id\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003etype\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e, \u003ccode\u003eregistry_code\u003c/code\u003e, \u003ccode\u003ebank_account\u003c/code\u003e, \u003ccode\u003ebank_branch\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n"},"PaymentProfile::Parameters::Create":{"type":"object","properties":{"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number":{"type":"string","description":"Número completo do cartão de crédito"},"card_cvv":{"type":"string","description":"Código de segurança do cartão de crédito com 3 ou 4 dígitos"},"token":{"type":"string"},"card_token":{"type":"string"},"gateway_id":{"type":"string"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código do banco ou bandeira"},"renewed_card":{"type":"object","properties":{"card_number_last_four":{"type":"string","description":"Últimos quatro dígitos do cartão de crédito renovado"},"card_expiration":{"type":"string","description":"Nova validade do cartão de crédito renovado"}}},"card_renewed_at":{"type":"string","description":"Data da renovação do cartão de crédito renovado"},"gateway_token":{"type":"string","description":"Token externo"},"customer_id":{"type":"integer","format":"int32","description":"ID do cliente associado ao perfil de pagamento"}},"required":["customer_id"]},"postV1PaymentProfiles":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo perfil de pagamento."},"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number":{"type":"string","description":"Número completo do cartão de crédito"},"card_cvv":{"type":"string","description":"Código de segurança do cartão de crédito com 3 ou 4 dígitos"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código do banco ou bandeira"},"card_renewed_at":{"type":"string","description":"Data da renovação do cartão de crédito renovado"},"gateway_token":{"type":"string","description":"Token externo"},"customer_id":{"type":"integer","format":"int32","description":"ID do cliente associado ao perfil de pagamento"}},"required":["customer_id"],"description":"Cadastra um novo perfil de pagamento para um cliente existente."},"Usage::Parameters::Create":{"type":"object","properties":{"period_id":{"type":"integer","format":"int32","description":"ID do período que receberá o registro de utilização"},"product_id":{"type":"integer","format":"int32","description":"ID do produto que receberá o registro de utilização. Informe este parâmetro ou `product_item_id`"},"product_item_id":{"type":"integer","format":"int32","description":"ID do item da assinatura que receberá o registro de utilização. Informe este parâmetro ou `product_id`"},"description":{"type":"string","description":"Descrição opcional"},"metadata":{"type":"hash","description":"Metadados do registro de utilização"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do registro de utilização"}},"required":["period_id","quantity"]},"postV1Usages":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo registro de utilização."},"period_id":{"type":"integer","format":"int32","description":"ID do período que receberá o registro de utilização"},"product_id":{"type":"integer","format":"int32","description":"ID do produto que receberá o registro de utilização. Informe este parâmetro ou `product_item_id`"},"product_item_id":{"type":"integer","format":"int32","description":"ID do item da assinatura que receberá o registro de utilização. Informe este parâmetro ou `product_id`"},"description":{"type":"string","description":"Descrição opcional"},"metadata":{"type":"hash","description":"Metadados do registro de utilização","enum":"metadata"},"quantity":{"type":"integer","format":"int32","description":"Quantidade do registro de utilização"}},"required":["period_id","quantity"],"description":"Cria um novo registro de utilização."},"Invoice::Parameters::Retry":{"type":"object","properties":{"accrued_on":{"type":"string","description":"Data de competência da nota fiscal. Se não informada, será utilizada a data de\n          agendamento. Caso a data de agendamento não exista, será utilizada a data atual"}}},"postV1InvoicesIdRetry":{"type":"object","properties":{"body":{"type":"Retry"},"accrued_on":{"type":"string","description":"Data de competência da nota fiscal. Se não informada, será utilizada a data de\n          agendamento. Caso a data de agendamento não exista, será utilizada a data atual"}},"description":"Efetua uma retentativa de envio de nota fiscal existente."},"Invoice::Parameters::Update":{"type":"object","properties":{"amount":{"type":"number","description":"Valor da nota fiscal"},"scheduled_at":{"type":"string","description":"Data e hora do agendamento da nota fiscal no formato ISO 8601. Use nulo para emissão imediata"},"accrued_on":{"type":"string","description":"Data de competência da nota fiscal. Se não informada, será utilizada a data de\n          agendamento. Caso a data de agendamento não exista, será utilizada a data atual"},"description":{"type":"string","description":"Descrição que será exibida na nota fiscal. Se não informada, a configuração padrão da integração será usada"},"settings":{"$ref":"#/definitions/Invoice::Settings::Parameters","description":"Configurações adicionais usadas na integração. Os campos disponíveis variam conforme a integração configurada."}}},"putV1Invoices":{"type":"object","properties":{"body":{"type":"Update","description":"JSON com os novos atributos da nota fiscal."},"amount":{"type":"number","description":"Valor da nota fiscal"},"scheduled_at":{"type":"string","description":"Data e hora do agendamento da nota fiscal no formato ISO 8601. Use nulo para emissão imediata"},"accrued_on":{"type":"string","description":"Data de competência da nota fiscal. Se não informada, será utilizada a data de\n          agendamento. Caso a data de agendamento não exista, será utilizada a data atual"},"description":{"type":"string","description":"Descrição que será exibida na nota fiscal. Se não informada, a configuração padrão da integração será usada"},"settings":{"$ref":"#/definitions/Invoice::Settings::Parameters","description":"Configurações adicionais usadas na integração. Os campos disponíveis variam conforme a integração configurada."}},"description":"Atualiza uma nota fiscal existente."},"Invoice::Parameters::Create":{"type":"object","properties":{"accrued_on":{"type":"string","description":"Data de competência da nota fiscal. Se não informada, será utilizada a data de\n          agendamento. Caso a data de agendamento não exista, será utilizada a data atual"},"bill_id":{"type":"integer","format":"int32","description":"ID da fatura"},"amount":{"type":"number","description":"Valor da nota fiscal. Se não informado, o valor da fatura será utilizado"},"scheduled_at":{"type":"string","description":"Data e hora do agendamento da nota fiscal no formato ISO 8601. Se não informada, a emissão será imediata"},"description":{"type":"string","description":"Descrição que será exibida na nota fiscal. Se não informada, a configuração padrão da integração será usada"},"settings":{"$ref":"#/definitions/Invoice::Settings::Parameters","description":"Configurações adicionais usadas na integração. Os campos disponíveis variam conforme a integração configurada."}},"required":["bill_id"]},"postV1Invoices":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos da nota fiscal."},"accrued_on":{"type":"string","description":"Data de competência da nota fiscal. Se não informada, será utilizada a data de\n          agendamento. Caso a data de agendamento não exista, será utilizada a data atual"},"bill_id":{"type":"integer","format":"int32","description":"ID da fatura"},"amount":{"type":"number","description":"Valor da nota fiscal. Se não informado, o valor da fatura será utilizado"},"scheduled_at":{"type":"string","description":"Data e hora do agendamento da nota fiscal no formato ISO 8601. Se não informada, a emissão será imediata"},"description":{"type":"string","description":"Descrição que será exibida na nota fiscal. Se não informada, a configuração padrão da integração será usada"},"settings":{"$ref":"#/definitions/Invoice::Settings::Parameters","description":"Configurações adicionais usadas na integração. Os campos disponíveis variam conforme a integração configurada."}},"required":["bill_id"],"description":"Emite uma nota fiscal avulsa."},"Movement":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do movimento"},"status":{"type":"string","enum":["active","inactive","deleted"],"description":"Status do movimento"},"amount":{"type":"number","description":"Valor do movimento"},"movement_type":{"type":"string","enum":["credit","debit"],"description":"Tipo do movimento"},"description":{"type":"string","description":"Descrição opcional"},"bill":{"$ref":"#/definitions/Bill::Summary","description":"Fatura associada ao movimento"}},"required":["id","amount","movement_type","bill"],"description":"Utilize este método para criar um movimento financeiro de ajuste (crédito)."},"Movement::Parameters::Create":{"type":"object","properties":{"amount":{"type":"number","description":"Valor do movimento"},"movement_type":{"type":"string","enum":["credit"],"description":"Tipo do movimento"},"origin":{"type":"string","enum":["bill_credit","invoice_withhold"],"description":"Origem do movimento"},"bill_id":{"type":"integer","format":"int32","description":"ID da fatura"},"description":{"type":"string","description":"Descrição opcional"}},"required":["amount","movement_type","bill_id"]},"postV1Movements":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do movimento financeiro."},"amount":{"type":"number","description":"Valor do movimento"},"movement_type":{"type":"string","description":"Tipo do movimento","enum":["credit"]},"origin":{"type":"string","description":"Origem do movimento","enum":["bill_credit","invoice_withhold"]},"bill_id":{"type":"integer","format":"int32","description":"ID da fatura"},"description":{"type":"string","description":"Descrição opcional"}},"required":["amount","movement_type","bill_id"],"description":"Cria um novo movimento financeiro de ajuste."},"Message::Parameters::Create":{"type":"object","properties":{"customer_id":{"type":"integer","format":"int32","description":"ID do cliente"},"charge_id":{"type":"integer","format":"int32","description":"ID da cobrança"},"notification_id":{"type":"integer","format":"int32","description":"ID da notificação"},"email":{"type":"string","description":"Endereço de e-mail. Se não informado, o e-mail atual do cliente será utilizado"}},"required":["customer_id","charge_id","notification_id"]},"postV1Messages":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos da mensagem."},"customer_id":{"type":"integer","format":"int32","description":"ID do cliente"},"charge_id":{"type":"integer","format":"int32","description":"ID da cobrança"},"notification_id":{"type":"integer","format":"int32","description":"ID da notificação"},"email":{"type":"string","description":"Endereço de e-mail. Se não informado, o e-mail atual do cliente será utilizado"}},"required":["customer_id","charge_id","notification_id"],"description":"Envia uma nova mensagem."},"Message":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da mensagem"},"notification_type":{"type":"string","enum":["email","sms","whatsapp"],"description":"Tipo da notificação da mensagem"},"seen_at":{"type":"string","description":"Última visualização da mensagem"},"created_at":{"type":"string","description":"Data e hora do envio da mensagem"},"delivered_at":{"type":"string","description":"Data e hora da entrega da mensagem"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente da mensagem"},"charge":{"$ref":"#/definitions/Charge::Summary","description":"Cobrança associada a mensagem"},"notification":{"$ref":"#/definitions/Notification::Summary","description":"Notificação usada na mensagem"}},"required":["id","notification_type","created_at","delivered_at","customer","charge","notification"],"description":"Utilize este método para listar as mensagens enviadas através da sua conta na plataforma Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003enotification_type\u003c/code\u003e, \u003ccode\u003enotification_id\u003c/code\u003e, \u003ccode\u003eseen_at\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003echarge_id\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003edelivered_at\u003c/code\u003e.\n  "},"Notification::Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Id"},"notification_type":{"type":"string","description":"Método de envio"}},"required":["id","notification_type"]},"ExportBatch":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do arquivo de remessa"},"status":{"type":"string","enum":["processing","review","exported","rejected"],"description":"Status do arquivo de remessa"},"url":{"type":"string","description":"URL temporária para download do arquivo"},"created_at":{"type":"string","description":"Data e hora do cadastro do arquivo de remessa"},"updated_at":{"type":"string","description":"Data e hora da última atualização do arquivo de remessa"},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento do arquivo de remessa"}},"required":["id","status","url","created_at","updated_at","payment_method"],"description":""},"ExportBatch::Parameters::Create":{"type":"object","properties":{"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código da bandeira ou banco"}},"required":["payment_method_code"]},"postV1ExportBatches":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do Lote de exportação."},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código da bandeira ou banco"}},"required":["payment_method_code"],"description":"Cria um novo lote de exportação."},"ImportBatch":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do lote de importação"},"status":{"type":"string","enum":["new","processing","imported","rejected"],"description":"Status do lote de importação"},"batch_file_name":{"type":"integer","format":"int32","description":"Nome do arquivo"},"batch_file_size":{"type":"integer","format":"int32","description":"Tamanho do arquivo em bytes"},"batch_fingerprint":{"type":"integer","format":"int32","description":"MD5 checksum"},"url":{"type":"string","description":"URL temporária para download do arquivo"},"created_at":{"type":"string","description":"Data e hora do cadastro do lote de importação"},"updated_at":{"type":"string","description":"Data e hora da última atualização do lote de importação"},"payment_method":{"$ref":"#/definitions/PaymentMethod::Summary","description":"Método de pagamento do lote de importação"}},"required":["id","status","batch_file_name","batch_file_size","batch_fingerprint","url","created_at","updated_at","payment_method"],"description":"Utilize este método para listar os lotes de importação associados à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003epayment_method_id\u003c/code\u003e, \u003ccode\u003ebatch_file_size\u003c/code\u003e, \u003ccode\u003ebatch_file_name\u003c/code\u003e, \u003ccode\u003ebatch_fingerprint\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e."},"Issue::Parameters":{"type":"object","properties":{"status":{"type":"string","enum":["open","closed"],"description":"Status da pendência"}},"required":["status"]},"putV1Issues":{"type":"object","properties":{"body":{"type":"Parameters","description":"JSON com novos atributos da pendência."},"status":{"type":"string","description":"Status da pendência","enum":["open","closed"]}},"required":["status"],"description":"Atualiza uma pendência existente através do ID."},"Issue":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da pendência"},"issue_type":{"type":"string","enum":["charge_underpay","charge_overpay"],"description":"Tipo da pendência"},"status":{"type":"string","enum":["open","closed"],"description":"Status da pendência"},"item_type":{"type":"string","description":"Tipo da entidade associada à pendência"},"item_id":{"type":"string","description":"ID da entidade associada à pendência"},"data":{"type":"hash","description":"Dados adicionais"},"created_at":{"type":"string","description":"Data e hora da geração da pendência"},"updated_at":{"type":"string","description":"Data e hora da última atualização da pendência"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente associado à pendência"}},"required":["id","issue_type","status","item_type","item_id","created_at","updated_at"],"description":"Utilize este método para listar as pendências associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003estatus\u003c/code\u003e, \u003ccode\u003eitem_id\u003c/code\u003e, \u003ccode\u003eitem_type\u003c/code\u003e, \u003ccode\u003eissue_type\u003c/code\u003e, \u003ccode\u003ecustomer_id\u003c/code\u003e, \u003ccode\u003ecreated_at\u003c/code\u003e e \u003ccode\u003eupdated_at\u003c/code\u003e.\n  "},"NotificationItem":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Id"},"item_type":{"type":"string","description":"Tipo da entidade"},"item_id":{"type":"integer","format":"int32","description":"Entidade"}},"required":["id","item_type","item_id"],"description":"Lista de itens para segmentação da notificação. Recomendamos que mantenha esta lista vazia ao menos que precise necessariamente restringir o envio da notificação para um ou mais planos ou métodos de pagamento.\n"},"NotificationItem::Parameters::Create":{"type":"object","properties":{"item_type":{"type":"integer","format":"int32","description":"Entidade"},"item_id":{"type":"integer","format":"int32","description":"Entidade"}},"required":["item_type","item_id"]},"postV1NotificationsIdNotificationItems":{"type":"object","properties":{"body":{"type":"Create"},"item_type":{"type":"integer","format":"int32","description":"Entidade"},"item_id":{"type":"integer","format":"int32","description":"Entidade"}},"required":["item_type","item_id"],"description":"Cria um item para segmentação da notificação."},"Notification":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Id"},"status":{"type":"string","description":"Status"},"notification_type":{"type":"string","description":"Método de envio"},"name":{"type":"string","description":"Nome"},"subject":{"type":"string","description":"Assunto"},"content":{"type":"string","description":"Conteúdo"},"trigger_type":{"type":"string","description":"Tipo de disparo"},"trigger_day":{"type":"integer","format":"int32","description":"Dia para disparo"},"bcc":{"type":"string","description":"Cópia oculta"},"created_at":{"type":"string","description":"Criação"},"updated_at":{"type":"string","description":"Atualização"}},"required":["id","status","notification_type","name","content","trigger_type","trigger_day","created_at","updated_at"],"description":"Utilize este método para listar as notificações associadas à sua conta na Vindi. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e.\n"},"Notification::Parameters::Update":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"notification_type":{"type":"string","description":"Método de envio"},"name":{"type":"string","description":"Nome"},"subject":{"type":"string","description":"Assunto"},"content":{"type":"string","description":"Conteúdo"},"trigger_type":{"type":"string","description":"Tipo de disparo"},"trigger_day":{"type":"integer","format":"int32","description":"Dia para disparo"},"bcc":{"type":"string","description":"Cópia oculta"}}},"putV1Notifications":{"type":"object","properties":{"body":{"type":"Update"},"status":{"type":"string","description":"Status"},"notification_type":{"type":"string","description":"Método de envio"},"name":{"type":"string","description":"Nome"},"subject":{"type":"string","description":"Assunto"},"content":{"type":"string","description":"Conteúdo"},"trigger_type":{"type":"string","description":"Tipo de disparo"},"trigger_day":{"type":"integer","format":"int32","description":"Dia para disparo"},"bcc":{"type":"string","description":"Cópia oculta"}},"description":"Atualiza uma notificação."},"Notification::Parameters::Create":{"type":"object","properties":{"status":{"type":"string","description":"Status"},"notification_type":{"type":"string","description":""},"name":{"type":"string","description":"Nome"},"subject":{"type":"string","description":"Assunto"},"content":{"type":"string","description":"Conteúdo"},"trigger_type":{"type":"string","description":"Tipo de disparo"},"trigger_day":{"type":"integer","format":"int32","description":"Dia para disparo"},"bcc":{"type":"string","description":"Cópia oculta"}},"required":["notification_type","name","content","trigger_type","trigger_day"]},"postV1Notifications":{"type":"object","properties":{"body":{"type":"Create"},"status":{"type":"string","description":"Status"},"notification_type":{"type":"string"},"name":{"type":"string","description":"Nome"},"subject":{"type":"string","description":"Assunto"},"content":{"type":"string","description":"Conteúdo"},"trigger_type":{"type":"string","description":"Tipo de disparo"},"trigger_day":{"type":"integer","format":"int32","description":"Dia para disparo"},"bcc":{"type":"string","description":"Cópia oculta"}},"required":["notification_type","name","content","trigger_type","trigger_day"],"description":"Cadastra uma nova notificação."},"Merchant":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da empresa"},"name":{"type":"string","description":"Nome da empresa"},"company_name":{"type":"string","description":"Razão social"},"registry_code":{"type":"string","description":"CNPJ da empresa"},"email":{"type":"string","description":"Email de contato da empresa"},"status":{"type":"string","enum":["active","inactive","trial"],"description":"Status da empresa"}},"required":["id","name","company_name","registry_code","email","status"],"description":""},"MerchantUser":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Id"},"status":{"type":"string","description":"Status"},"last_sign_in_at":{"type":"string","description":"Último login"},"user":{"$ref":"#/definitions/Summary","description":"Usuário"},"role":{"$ref":"#/definitions/Full","description":"Perfil de acesso"}},"required":["id","status","last_sign_in_at","user","role"],"description":"Utilize este método para listar os Usuários de um determinado merchant. Leia a documentação sobre [paginação](http://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](http://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n\n#### Atributos para busca\n\u003ccode\u003eid\u003c/code\u003e, \u003ccode\u003eemail\u003c/code\u003e e \u003ccode\u003estatus\u003c/code\u003e.\n"},"Summary":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Id"},"name":{"type":"string","description":"Nome"},"partner_name":{"type":"string","description":"Nome do Parceiro"},"email":{"type":"string","description":"E-mail"},"status":{"type":"string","description":"Status"},"created_at":{"type":"string","description":"Created at"}},"required":["id","name","email","status","created_at"]},"Full":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"Id"},"name":{"type":"string","description":"Translated name"},"base_role":{"type":"string","description":"Perfil básico"}},"required":["id","name","base_role"],"description":"Retorna o usuário atual."},"MerchantUser::Parameters::Update":{"type":"object","properties":{"role_id":{"type":"integer","format":"int32","description":"Perfil de acesso"}}},"putV1MerchantUsers":{"type":"object","properties":{"body":{"type":"Update"},"role_id":{"type":"integer","format":"int32","description":"Perfil de acesso"}},"description":"Atualiza um usuário associado."},"MerchantUser::Parameters::Create":{"type":"object","properties":{"name":{"type":"string","description":"Nome"},"partner_name":{"type":"string","description":"Nome do Parceiro"},"email":{"type":"string","description":"Email"},"role_id":{"type":"integer","format":"int32","description":"Perfil de acesso"}},"required":["name","email","role_id","action"]},"postV1MerchantUsers":{"type":"object","properties":{"body":{"type":"Create"},"name":{"type":"string","description":"Nome"},"partner_name":{"type":"string","description":"Nome do Parceiro"},"email":{"type":"string","description":"Email"},"role_id":{"type":"integer","format":"int32","description":"Perfil de acesso"},"action":{"type":"string","description":"Action"}},"required":["name","email","role_id","action"],"description":"Cadastra um novo usuário associado."},"Affiliate":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do participante do split de pagamento"},"login":{"type":"string","description":"Login do participante do split de pagamento"},"status":{"type":"integer","format":"int32","description":"Status do participante do split de pagamento"},"enabled":{"type":"boolean","description":"Define participante do split de pagamento como ativo ou inativo"},"name":{"type":"string","description":"Nome do participante do split de pagamento"},"cpf":{"type":"string","description":"CPF do participante do split de pagamento"},"cnpj":{"type":"string","description":"CNPJ da empresa do participante do split de pagamento"},"trade_name":{"type":"string","description":"Nome fantasia da empresa do participante do split de pagamento"},"company_name":{"type":"string","description":"Nome da empresa do participante do split de pagamento"},"street":{"type":"string","description":"Nome da rua do endereço do participante do split de pagamento"},"number":{"type":"string","description":"Número do endereço do participante do split de pagamento"},"completion":{"type":"string","description":"Complemento do endereço do participante do split de pagamento"},"neighborhood":{"type":"string","description":"Bairro do endereço do participante do split de pagamento"},"postal_code":{"type":"string","description":"CEP do endereço do participante do split de pagamento"},"city":{"type":"string","description":"Cidade do participante do split de pagamento"},"state":{"type":"string","description":"Estado do participante do split de pagamento"},"phone":{"type":"string","description":"Celular do participante do split de pagamento"},"account_branch":{"type":"string","description":"Número da agência bancária do participante do split de pagamento"},"account_number":{"type":"string","description":"Número da conta bancária do participante do split de pagamento"},"bank_code":{"type":"string","description":"Código do banco do participante do split de pagamento"}},"required":["id","login"],"description":"Cadastra um novo participante do split de pagamento"},"Affiliate::Parameters::Update":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Define participante do split de pagamento como ativo ou inativo"}},"required":["enabled"]},"putV1Affiliates":{"type":"object","properties":{"body":{"type":"Update"},"enabled":{"type":"boolean","description":"Define participante do split de pagamento como ativo ou inativo"}},"required":["enabled"],"description":"Atualiza o status do participante para ativo ou inativo."},"Affiliate::Parameters::Create":{"type":"object","properties":{"login":{"type":"string","description":"Login do participante do split de pagamento"},"status":{"type":"integer","format":"int32","description":"Status do participante do split de pagamento"},"enabled":{"type":"boolean","description":"Define participante do split de pagamento como ativo ou inativo"},"name":{"type":"string","description":"Nome do participante do split de pagamento"},"cpf":{"type":"string","description":"CPF do participante do split de pagamento"},"cnpj":{"type":"string","description":"CNPJ da empresa do participante do split de pagamento"},"trade_name":{"type":"string","description":"Nome fantasia da empresa do participante do split de pagamento"},"company_name":{"type":"string","description":"Nome da empresa do participante do split de pagamento"},"street":{"type":"string","description":"Nome da rua do endereço do participante do split de pagamento"},"number":{"type":"string","description":"Número do endereço do participante do split de pagamento"},"completion":{"type":"string","description":"Complemento do endereço do participante do split de pagamento"},"neighborhood":{"type":"string","description":"Bairro do endereço do participante do split de pagamento"},"postal_code":{"type":"string","description":"CEP do endereço do participante do split de pagamento"},"city":{"type":"string","description":"Cidade do participante do split de pagamento"},"state":{"type":"string","description":"Estado do participante do split de pagamento"},"phone":{"type":"string","description":"Celular do participante do split de pagamento"},"account_branch":{"type":"string","description":"Número da agência bancária do participante do split de pagamento"},"account_number":{"type":"string","description":"Número da conta bancária do participante do split de pagamento"},"account_validator":{"type":"string","description":"Dígito verificador da conta bancária do participante do split de pagamento"},"bank_code":{"type":"string","description":"Código do banco do participante do split de pagamento"}},"required":["login","name","cpf","cnpj","trade_name","company_name","street","number","completion","neighborhood","postal_code","city","state","phone","account_branch","account_number","account_validator","bank_code"]},"postV1Affiliates":{"type":"object","properties":{"body":{"type":"Create"},"login":{"type":"string","description":"Login do participante do split de pagamento"},"status":{"type":"integer","format":"int32","description":"Status do participante do split de pagamento"},"enabled":{"type":"boolean","description":"Define participante do split de pagamento como ativo ou inativo"},"name":{"type":"string","description":"Nome do participante do split de pagamento"},"cpf":{"type":"string","description":"CPF do participante do split de pagamento"},"cnpj":{"type":"string","description":"CNPJ da empresa do participante do split de pagamento"},"trade_name":{"type":"string","description":"Nome fantasia da empresa do participante do split de pagamento"},"company_name":{"type":"string","description":"Nome da empresa do participante do split de pagamento"},"street":{"type":"string","description":"Nome da rua do endereço do participante do split de pagamento"},"number":{"type":"string","description":"Número do endereço do participante do split de pagamento"},"completion":{"type":"string","description":"Complemento do endereço do participante do split de pagamento"},"neighborhood":{"type":"string","description":"Bairro do endereço do participante do split de pagamento"},"postal_code":{"type":"string","description":"CEP do endereço do participante do split de pagamento"},"city":{"type":"string","description":"Cidade do participante do split de pagamento"},"state":{"type":"string","description":"Estado do participante do split de pagamento"},"phone":{"type":"string","description":"Celular do participante do split de pagamento"},"account_branch":{"type":"string","description":"Número da agência bancária do participante do split de pagamento"},"account_number":{"type":"string","description":"Número da conta bancária do participante do split de pagamento"},"account_validator":{"type":"string","description":"Dígito verificador da conta bancária do participante do split de pagamento"},"bank_code":{"type":"string","description":"Código do banco do participante do split de pagamento"}},"required":["login","name","cpf","cnpj","trade_name","company_name","street","number","completion","neighborhood","postal_code","city","state","phone","account_branch","account_number","account_validator","bank_code"],"description":"Cadastra um novo participante do split de pagamento"},"Entities::Partner::Integration::Parameters::ClickToPaySettings":{"type":"object","properties":{"company_name":{"type":"string","description":"Nome da empresa para o Click to Pay."},"website":{"type":"string","description":"URL absoluta do site da empresa (http ou https)."}},"required":["company_name","website"]},"postV1PartnerIntegrations":{"type":"object","properties":{"type":{"type":"string","description":"Tipo da integração","enum":["click_to_pay","clear_sale"]},"merchant_id":{"type":"integer","format":"int32","description":"ID da subconta onde a integração será provisionada"},"settings":{"$ref":"#/definitions/Entities::Partner::Integration::Parameters::ClickToPaySettings","description":"Configurações específicas da integração. O exemplo abaixo mostra os campos do click_to_pay. Para clear_sale: { modality: String (total_garantido|real_time), username: String, password: String, custom_sla?: Integer (apenas quando modality=total_garantido) }.","type":"object","properties":{"company_name":{"type":"string"},"website":{"type":"string"},"modality":{"type":"string","enum":["total_garantido","real_time"]},"username":{"type":"string"},"password":{"type":"string"},"custom_sla":{"type":"integer","format":"int32"}},"required":["company_name","website","modality","username","password"]}},"required":["type","merchant_id","settings"],"description":"Provisiona uma integração em uma subconta do parceiro."},"Entities::Partner::Integration::Response::ClickToPay":{"type":"object","properties":{"merchant_id":{"type":"integer","format":"int32","description":"ID da subconta onde a integração será provisionada"},"id":{"type":"integer","format":"int32","description":"ID da integração"},"status":{"type":"string","description":"Status inicial da integração após o provisionamento."},"dpa_id":{"type":"string","description":"Identificador DPA gerado na Mastercard (presente apenas para click_to_pay)."},"type":{"type":"string","enum":["click_to_pay"],"description":"Tipo da integração"}},"required":["merchant_id","id","status","type"],"description":"Retorna o estado atual das integrações instaladas na subconta do parceiro.\n\n- Quando `type` é informado e a integração existe: retorna o objeto em `integration`.\n- Quando `type` é informado e a integração NÃO existe (ou foi deletada):\n  retorna `200` com `integration: null` e um campo `message` explicando o motivo.\n- Quando `type` é omitido: retorna a lista de todas as integrações ativas/inativas da subconta\n  (array em `integrations`). Lista pode vir vazia.\n\nTipos aceitos no parâmetro `type`: `clear_sale` e `click_to_pay`.\n\nResposta inclui `status`, `modality` (clear_sale), `dpa_id` (click_to_pay) e\n`callback_url` quando aplicável.\n"},"Entities::Partner::Integration::Parameters::ClearSaleSettings":{"type":"object","properties":{"modality":{"type":"string","enum":["total_garantido","real_time"],"description":"Modalidade contratada."},"username":{"type":"string","description":"Credencial username da ClearSale."},"password":{"type":"string","description":"Credencial password da ClearSale."},"custom_sla":{"type":"integer","format":"int32","description":"SLA customizado (apenas quando modality=total_garantido)."}}},"putV1PartnerIntegrations":{"type":"object","properties":{"merchant_id":{"type":"integer","format":"int32","description":"ID da subconta onde a integração será provisionada"},"type":{"type":"string","description":"Tipo da integração. Atualmente o PUT aceita apenas `clear_sale`.","enum":["clear_sale"]},"status":{"type":"string","description":"Novo status da integração.","enum":["active","inactive"]},"settings":{"$ref":"#/definitions/Entities::Partner::Integration::Parameters::ClearSaleSettings","description":"Campos a atualizar (todos opcionais). Apenas o que for enviado é alterado. `custom_sla` é aceito apenas quando `modality=total_garantido`.","type":"object","properties":{"modality":{"type":"string","enum":["total_garantido","real_time"]},"username":{"type":"string"},"password":{"type":"string"},"custom_sla":{"type":"integer","format":"int32"}}}},"required":["merchant_id","type"],"description":"Atualiza uma integração instalada em uma subconta do parceiro."},"Entities::Partner::Integration::Response::ClearSale":{"type":"object","properties":{"merchant_id":{"type":"integer","format":"int32","description":"ID da subconta onde a integração será provisionada"},"id":{"type":"integer","format":"int32","description":"ID da integração"},"status":{"type":"string","description":"Status inicial da integração após o provisionamento."},"modality":{"type":"string","enum":["total_garantido","real_time"],"description":"Modalidade contratada (presente apenas para clear_sale)."},"callback_url":{"type":"string","description":"URL de callback gerada para a integração (presente quando aplicável)."},"type":{"type":"string","enum":["clear_sale"],"description":"Tipo da integração"}},"required":["merchant_id","id","status","type"],"description":"**Atualmente o PUT só atualiza integrações do tipo `clear_sale`.** Enviar\noutros tipos retorna 422.\n\nAtualiza o estado e/ou as configurações da integração. Aceita `status` (active/inactive)\ne `settings`. Todos os campos são opcionais — apenas o que for enviado é atualizado.\n"},"Entities::Partner::Integration::Response::Delete":{"type":"object","properties":{"type":{"type":"string","enum":["click_to_pay","clear_sale"],"description":"Tipo da integração"},"merchant_id":{"type":"integer","format":"int32","description":"ID da subconta onde a integração será provisionada"},"id":{"type":"integer","format":"int32","description":"ID da integração removida"},"status":{"type":"string","enum":["deleted"],"description":"Status da integração após a remoção."}},"required":["type","merchant_id","id","status"],"description":"Remove a integração informada da subconta do parceiro. O tipo é discriminado pelo campo `type` na query.\n\nTipos suportados:\n  • click_to_pay: marca a integração como removida, desativa o método de pagamento `click_to_pay`\n    e cancela o registro do DPA na Mastercard.\n"},"Entities::Partner::Gateway::Pix::Parameters::PaymentMethod":{"type":"object","properties":{"code":{"type":"string","description":"Referência do método de pagamento via API"},"name":{"type":"string","description":"Nome privado do método de pagamento"},"expiration_time":{"type":"integer","format":"int32","description":"Expiração do QR Code em minutos (faixa 1..1440)"}},"required":["code","name","expiration_time"]},"postV1PartnerGatewaysPix":{"type":"object","properties":{"merchant_id":{"type":"integer","format":"int32","description":"ID do merchant subaccount do parceiro"},"acquirer":{"type":"string","description":"Adquirente do Pix","enum":"code_acquirer"},"credentials":{"type":"object","description":"Credenciais do adquirente (pv e password para e_rede_rest)"},"priority":{"type":"integer","format":"int32","description":"Prioridade do gateway entre os demais do merchant (\u003e= 0)"},"payment_methods":{"type":"array","description":"Métodos de Pix a criar/vincular. Cada item: code (referência via API), name (nome privado) e expiration_time (expiração do QR Code em minutos, faixa 1..1440)","items":{"$ref":"#/definitions/Entities::Partner::Gateway::Pix::Parameters::PaymentMethod"}}},"required":["merchant_id","acquirer","credentials","payment_methods"],"description":"Cadastra um novo gateway de Pix vinculado a um método de pagamento."},"Entities::Partner::Gateway::Pix::Response::Full":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"type":{"type":"string"},"acquirer":{"type":"string"},"merchant_id":{"type":"integer","format":"int32"},"status":{"type":"string"},"priority":{"type":"integer","format":"int32"}},"required":["id","type","acquirer","merchant_id","status"],"description":"Provisiona um gateway de Pix junto com seus métodos de pagamento em uma única chamada.\nCada item de `payment_methods` informa code, name e expiration_time (minutos, faixa 1..1440).\n"},"Entities::Partner::Gateway::PixBankSlip::Parameters::Create":{"type":"object","properties":{"merchant_id":{"type":"integer","format":"int32","description":"ID do merchant"},"acquirer":{"type":"string","enum":["yapay"],"description":"Adquirente"},"credentials":{"type":"object","description":"Credenciais do gateway (Yapay: token_account obrigatório; reseller_token e payment_tax_code opcionais)"},"priority":{"type":"integer","format":"int32","description":"Prioridade do gateway"},"customer_alternate_address":{"type":"boolean","description":"Usa endereço alternativo do cliente. Default: true"},"payment_methods":{"type":"array","items":{"$ref":"#/definitions/Entities::Partner::Gateway::PixBankSlip::Parameters::PaymentMethod"},"description":"Métodos de pagamento a serem criados e vinculados ao gateway"}},"required":["merchant_id","acquirer","credentials"]},"Entities::Partner::Gateway::PixBankSlip::Parameters::PaymentMethod":{"type":"object","properties":{"code":{"type":"string","description":"Código do método de pagamento (ex.: bolepix). O código deve ser um valor único por método de pagamento"},"name":{"type":"string","description":"Nome do método de pagamento"},"due_days":{"type":"integer","format":"int32","description":"Dias para vencimento do boleto/pix"},"additional_instructions":{"type":"string","description":"Instruções adicionais exibidas ao final do boleto (aceita HTML e tags Liquid)"},"dynamic":{"type":"boolean","description":"Vencimento variável: regera o boleto/pix com novo vencimento e soma multa/juros quando pago em atraso. Default: true"},"payment_condition":{"$ref":"#/definitions/PaymentCondition::Parameters::Create","description":"Multa após vencimento e desconto de pontualidade do método. after_due_days não é aceito (fixo na Yapay)"}},"required":["code","name"]},"postV1PartnerGatewaysBolepix":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos do novo gateway Bolepix."},"merchant_id":{"type":"integer","format":"int32","description":"ID do merchant"},"acquirer":{"type":"string","description":"Adquirente","enum":["yapay"]},"credentials":{"type":"object","description":"Credenciais do gateway (Yapay: token_account obrigatório; reseller_token e payment_tax_code opcionais)"},"priority":{"type":"integer","format":"int32","description":"Prioridade do gateway"},"customer_alternate_address":{"type":"boolean","description":"Usa endereço alternativo do cliente. Default: true"},"payment_methods":{"type":"array","description":"Métodos de pagamento a serem criados e vinculados ao gateway","items":{"$ref":"#/definitions/Entities::Partner::Gateway::PixBankSlip::Parameters::PaymentMethod"}}},"required":["merchant_id","acquirer","credentials"],"description":"Cadastra um novo gateway Bolepix (pix_bank_slip)."},"Entities::Partner::Gateway::PixBankSlip::Response::Full":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do gateway"},"type":{"type":"string","description":"Tipo do gateway"},"acquirer":{"type":"string","description":"Adquirente"},"merchant_id":{"type":"integer","format":"int32"},"priority":{"type":"integer","format":"int32"},"status":{"type":"string","description":"Status do gateway"},"customer_alternate_address":{"type":"boolean"},"payment_methods":{"type":"array","items":{"$ref":"#/definitions/Entities::Partner::Gateway::PixBankSlip::Response::PaymentMethod"},"description":"Métodos de pagamento vinculados ao gateway"}},"required":["id","type","acquirer","merchant_id","status"],"description":"Credenciais Yapay: token_account (obrigatório), reseller_token (opcional),\npayment_tax_code (opcional). merchant_code é obtido automaticamente quando omitido.\n"},"Entities::Partner::Gateway::PixBankSlip::Response::PaymentMethod":{"type":"object","properties":{"id":{"type":"integer","format":"int32"},"code":{"type":"string"},"name":{"type":"string"},"due_days":{"type":"integer","format":"int32"},"additional_instructions":{"type":"string"},"dynamic":{"type":"boolean"},"payment_condition":{"$ref":"#/definitions/PaymentCondition","description":"Condição de pagamento (multa/desconto)"}},"required":["id","code","name"]},"postV1PartnerGateways":{"type":"object","properties":{"type":{"type":"string","description":"Tipo do gateway, relacionado ao método de pagamento","enum":["credit_card"]},"acquirer":{"type":"string","description":"Adquirente ou Subadquirente","enum":["adyen","bin","cielo_v3","e_rede_rest","getnet","getnet_v2","pagar_me","safra_pay","stone","stone_v2","yapay"]},"charge_mode":{"type":"string","description":"Modo de cobrança","enum":["purchase","authorize_and_capture","authorize_and_manual_capturing"]},"merchant_id":{"type":"integer","format":"int32"},"priority":{"type":"integer","format":"int32","description":"Prioridade do gateway"},"names":{"type":"array","description":"Nomes dos métodos de pagamento a serem associados ao gateway","items":{"type":"string"}},"codes":{"type":"array","description":"Códigos dos métodos de pagamentos a serem associados ao gateway","items":{"type":"string"}},"credentials":{"type":"object","description":"Campos das credenciais do gateway"},"installments_priority":{"type":"integer","format":"int32","description":"Prioridade do parcelamento, valores aceitos: 1 à 24 ou vazio","enum":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]}},"required":["type","acquirer","charge_mode","merchant_id","credentials"],"description":"Cadastra um novo gateway."},"Entities::Partner::Gateway::Response::Full":{"type":"object","properties":{"type":{"type":"string","enum":["credit_card"],"description":"Tipo do gateway, relacionado ao método de pagamento"},"acquirer":{"type":"string","enum":["adyen","bin","cielo_v3","e_rede_rest","getnet","getnet_v2","pagar_me","safra_pay","stone","stone_v2","yapay"],"description":"Adquirente ou Subadquirente"},"charge_mode":{"type":"string","enum":["purchase","authorize_and_capture","authorize_and_manual_capturing"],"description":"Modo de cobrança"},"merchant_id":{"type":"integer","format":"int32"},"priority":{"type":"integer","format":"int32","description":"Prioridade do gateway"},"id":{"type":"integer","format":"int32","description":"ID do gateway"},"status":{"type":"string","description":"Status do gateway"}},"required":["type","acquirer","charge_mode","merchant_id","id","status"],"description":"Campos obrigatórios das credenciais por adquirente:\n            • Stone: SAK e-commerce (Chave de filiação) = merchant\n• Stone V2: username e password\n• Cielo V3: merchant_id, merchant_key\n• Bin: user, password, pem_password, cert e key\n• E Rede Rest: pv e password\n• Getnet: login, password, merchant, terminal_id\n• Getnet V2: client_id e client_secret\n• Safra Pay: ec e terminal\n• Pagar Me: Chave API = api_key\n• Adyen: username, password e merchant_account\n• Yapay: token_account (obrigatório); merchant_code obtido automaticamente no cadastro quando omitido; Reseller Token = reseller_token (opcional)\n"},"Parameters":{"type":"object","properties":{"bank_code":{"type":"string","description":"Código do banco"},"bank_branch":{"type":"string","description":"Agência"},"account_number":{"type":"string","description":"Conta bancária"},"account_digit":{"type":"string","description":"Dígito da conta bancária"}},"required":["bank_code","bank_branch","account_number","account_digit"]},"Address::ParametersAccount":{"type":"object","properties":{"street":{"type":"string","description":"Endereço (rua, avenida etc)"},"number":{"type":"string","description":"Número do endereço"},"additional_details":{"type":"string","description":"Complemento do endereço"},"zipcode":{"type":"string","description":"CEP"},"neighborhood":{"type":"string","description":"Bairro"},"city":{"type":"string","description":"Cidade"},"state":{"type":"string","description":"Código do estado no formato ISO 3166-2. Exemplo: SP"}},"required":["street","number","zipcode","neighborhood","city","state"]},"postV1PartnerAccounts":{"type":"object","properties":{"name":{"type":"string","description":"Nome fantasia da empresa"},"company_name":{"type":"string","description":"Razão social da empresa"},"cpf":{"type":"string","description":"CPF do sócio(a)"},"cnpj":{"type":"string","description":"CNPJ da empresa"},"user_name":{"type":"string","description":"Nome completo do sócio(a)"},"user_email":{"type":"string","description":"E-mail do sócio(a)"},"economic_activity":{"type":"string","description":"CNAE - Classificação Nacional de Atividades Econômicas da empresa"},"bank_account":{"$ref":"#/definitions/Parameters","description":"Nó de informações referente aos dados bancários"},"address":{"$ref":"#/definitions/Address::ParametersAccount","description":"Nó de informações referente ao endereço"},"phone_number":{"type":"string","description":"Número de telefone"},"template_code":{"type":"string","description":"Código do template de conta, utilizado para que a contaseja criada com as configurações presentes no template."}},"required":["name","company_name","cpf","cnpj","user_name","user_email","economic_activity","address","phone_number","template_code"],"description":"Cadastra uma nova conta do parceiro"},"Account":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da subconta"},"user_email":{"type":"string","description":"E-mail da subconta"},"name":{"type":"string","description":"Nome da subconta"},"company_name":{"type":"string","description":"Razão social"},"cnpj":{"type":"string","description":"CNPJ da subconta"},"status":{"type":"string","enum":["active","inactive","trial"],"description":"Status da subconta"},"created_at":{"type":"string","description":"Data de criação da subconta"},"private_api_key":{"type":"string"},"public_api_key":{"type":"string"}},"required":["id","user_email","name","company_name","cnpj","status","created_at"],"description":"Utilize este método para listar as contas associadas ao parceiro. Leia a documentação sobre [paginação](https://atendimento.vindi.com.br/hc/pt-br/articles/203020644#pagination) e [filtros de busca](https://atendimento.vindi.com.br/hc/pt-br/articles/204163150).\n"},"Billing::Create":{"type":"object","properties":{"code":{"type":"string","description":"Código externo para referência via API"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor 1 será utilizado"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança no formato ISO 8601. Se não informada, a cobrança será imediata"},"due_at":{"type":"string","description":"Data opcional de vencimento da cobrança no formato ISO 8601. Se não informada, o vencimento padrão será utilizado"},"customer":{"$ref":"#/definitions/CustomerData","description":"Dados do cliente. Obrigatório se customer_id não for informado"},"bill_items":{"type":"array","items":{"$ref":"#/definitions/BillItems"},"description":"Lista de itens da fatura. Cada item deve ter um produto associado (existente ou novo)"},"bill_affiliates":{"type":"array","items":{"$ref":"#/definitions/BillAffiliate::Parameters::Create"},"description":"Lista de participantes da fatura. Este campo é exclusivo para transaçõesque contenham participantes ativos. Os participantes dividem o valorda fatura com a empresa"},"metadata":{"type":"object","description":"Metadados da fatura"},"payment_profile":{"$ref":"#/definitions/Profile","description":"Perfil de pagamento"},"payment_condition":{"$ref":"#/definitions/Condition","description":"Condição de pagamento"},"fingerprint":{"type":"string","description":"Fingerprint"},"device":{"$ref":"#/definitions/Device::Parameters::Create","description":"Informações sobre o dispositivo do usuário."},"discard_credit_card":{"type":"boolean","description":"Descartar cartão de crédito"},"custom_bank_slip_our_number":{"type":"string","description":"Nosso número do boleto. Exemplo: \"12345678\". (requer toggle CUSTOM_ITAU_SLIP_NUMBER ativo)"}},"required":["payment_method_code","bill_items"]},"CustomerData":{"type":"object","properties":{"customer_ip":{"type":"string","description":"IP do comprador para análise de antifraude (formato IPv4)"},"name":{"type":"string","description":"Nome do cliente"},"email":{"type":"string","description":"Email do cliente. Obrigatório"},"registry_code":{"type":"string","description":"Documento do cliente."},"code":{"type":"string","description":"Código externo do cliente"},"notes":{"type":"string","description":"Observações sobre o cliente"},"metadata_attributes":{"type":"object","description":"Metadados do cliente"},"address_attributes":{"$ref":"#/definitions/Address","description":"Endereço do cliente. Obrigatório para o cadastro"},"phones_attributes":{"type":"array","items":{"$ref":"#/definitions/Phone"},"description":"Lista de números de telefone do cliente"},"date_of_birth":{"type":"string","description":"Data de nascimento do cliente no formato ISO 8601 (YYYY-MM-DD). Exemplo: \"1990-05-15\""},"shipping":{"$ref":"#/definitions/ShippingData","description":"Dados de entrega para análise de antifraude"}},"required":["email"]},"ShippingData":{"type":"object","properties":{"amount":{"type":"number","description":"Valor do frete. Exemplo: 15.63"},"description":{"type":"string","description":"Descrição da entrega. Exemplo: \"Entrega expressa\""},"recipient_name":{"type":"string","description":"Nome de quem vai receber a entrega. Exemplo: \"João Silva\""},"recipient_phone":{"type":"string","description":"Telefone do destinatário no formato E.164. Exemplo: \"+5541999999999\""},"estimated_date":{"type":"string","description":"Data estimada de entrega no formato ISO 8601 (YYYY-MM-DD). Exemplo: \"2026-06-30\""},"shipping_address":{"$ref":"#/definitions/ShippingAddress","description":"Endereço completo de entrega"}}},"ShippingAddress":{"type":"object","properties":{"street":{"type":"string","description":"Rua"},"number":{"type":"string","description":"Número"},"additional_details":{"type":"string","description":"Complemento"},"zipcode":{"type":"string","description":"CEP"},"neighborhood":{"type":"string","description":"Bairro"},"city":{"type":"string","description":"Cidade"},"state":{"type":"string","description":"Código do estado no formato ISO 3166-2. Exemplo: SP"},"country":{"type":"string","description":"Código do país no formato ISO 3166-1 alpha-2. Exemplo: BR"},"coordinates":{"$ref":"#/definitions/Coordinates","description":"Coordenadas geográficas do endereço de entrega"}}},"Coordinates":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude. Intervalo aceito: -90.0 a 90.0. Exemplo: -23.550827"},"lon":{"type":"number","description":"Longitude. Intervalo aceito: -180.0 a 180.0. Exemplo: -46.633308"}}},"BillItems":{"type":"object","properties":{"code":{"type":"string","description":"Código externo do produto usado como referencia"},"name":{"type":"string","description":"Nome do produto"},"unit":{"type":"string","description":"Unidade do produto"},"quantity":{"type":"number","description":"Quantidade do produto"},"amount":{"type":"number","description":"Valor total do item na fatura"},"status":{"type":"string","default":"active","enum":["active","inactive"],"description":"Status do produto"},"description":{"type":"string","description":"Descrição do produto"},"invoice":{"type":"string","default":"always","enum":["always","never"],"description":"Tipo de faturamento do produto"},"metadata":{"type":"object","description":"Metadados do produto"},"pricing_schema":{"$ref":"#/definitions/PricingSchema","description":"Esquema de precificação do item. Obrigatório pra criação do produto"},"sku":{"type":"string","description":"SKU do produto para análise de antifraude. Exemplo: \"9919023\""},"category":{"type":"integer","format":"int32","description":"Código numérico da categoria do produto para análise de antifraude. Exemplo: 201"}},"required":["code","name","amount","pricing_schema"]},"Profile":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID do perfil de pagamento"},"token":{"type":"string","description":"Token do perfil de pagamento"},"holder_name":{"type":"string","description":"Nome do titular"},"registry_code":{"type":"string","description":"CPF/CNPJ do titular"},"bank_branch":{"type":"string","description":"Agência bancária"},"bank_account":{"type":"string","description":"Conta bancária"},"card_expiration":{"type":"string","description":"Data de expiração do cartão"},"allow_as_fallback":{"type":"boolean","description":"Permite usar como fallback"},"card_number":{"type":"string","description":"Número do cartão"},"card_cvv":{"type":"string","description":"Código de segurança do cartão"},"card_token":{"type":"string","description":"Token do cartão"},"gateway_id":{"type":"string","description":"ID do gateway"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código da empresa de pagamento"},"gateway_token":{"type":"string","description":"Token do gateway"}}},"Condition":{"type":"object","properties":{"penalty_fee_value":{"type":"number","description":"Valor da multa"},"penalty_fee_type":{"type":"string","description":"Tipo da multa"},"daily_fee_value":{"type":"number","description":"Valor da taxa diária"},"daily_fee_type":{"type":"string","description":"Tipo da taxa diária"},"after_due_days":{"type":"integer","format":"int32","description":"Dias após o vencimento"},"payment_condition_discounts":{"$ref":"#/definitions/ConditionDiscount","description":"Descontos por condição de pagamento"}}},"ConditionDiscount":{"type":"object","properties":{"value":{"type":"number","description":"Valor do desconto"},"value_type":{"type":"string","enum":["percentage","fixed"],"description":"Tipo do valor do desconto"},"days_before_due":{"type":"integer","format":"int32","description":"Dias antes do vencimento"}}},"postV1Billing":{"type":"object","properties":{"body":{"type":"Create","description":"JSON com atributos da fatura avulsa."},"customer_ip":{"type":"string","description":"IP do comprador para análise de antifraude."},"code":{"type":"string","description":"Código externo para referência via API"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Se não informado, o valor 1 será utilizado"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança no formato ISO 8601. Se não informada, a cobrança será imediata"},"due_at":{"type":"string","description":"Data opcional de vencimento da cobrança no formato ISO 8601. Se não informada, o vencimento padrão será utilizado"},"customer":{"$ref":"#/definitions/CustomerData","description":"Dados do cliente. Obrigatório se customer_id não for informado"},"bill_items":{"type":"array","description":"Lista de itens da fatura. Cada item deve ter um produto associado (existente ou novo)","items":{"$ref":"#/definitions/BillItems"}},"bill_affiliates":{"type":"array","description":"Lista de participantes da fatura. Este campo é exclusivo para transaçõesque contenham participantes ativos. Os participantes dividem o valorda fatura com a empresa","items":{"$ref":"#/definitions/BillAffiliate::Parameters::Create"}},"metadata":{"type":"object","description":"Metadados da fatura"},"payment_profile":{"$ref":"#/definitions/Profile","description":"Perfil de pagamento"},"payment_condition":{"$ref":"#/definitions/Condition","description":"Condição de pagamento"},"fingerprint":{"type":"string","description":"Fingerprint"},"device":{"$ref":"#/definitions/Device::Parameters::Create","description":"Informações sobre o dispositivo do usuário."},"discard_credit_card":{"type":"boolean","description":"Descartar cartão de crédito"},"custom_bank_slip_our_number":{"type":"string","description":"Nosso número do boleto. Exemplo: \"12345678\". (requer toggle CUSTOM_ITAU_SLIP_NUMBER ativo)"}},"required":["payment_method_code","bill_items"],"description":"Cria produto, cliente, perfil de pagamento e fatura avulsa."},"Billing::Full":{"type":"object","properties":{"id":{"type":"integer","format":"int32","description":"ID da fatura"},"code":{"type":"string","description":"Código externo para referência via API"},"amount":{"type":"number","description":"Valor da fatura"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas"},"status":{"type":"string","enum":["review","pending","paid","canceled","scheduled"],"description":"Status da fatura"},"seen_at":{"type":"string","description":"Última visualização da fatura"},"billing_at":{"type":"string","description":"Data opcional de emissão da cobrança"},"due_at":{"type":"string","description":"Data de vencimento da fatura"},"url":{"type":"string","description":"URL para pagamento da fatura"},"created_at":{"type":"string","description":"Data e hora da geração da fatura"},"updated_at":{"type":"string","description":"Data e hora da última atualização da fatura"},"bill_items":{"type":"array","items":{"$ref":"#/definitions/BillItem"},"description":"Itens da fatura.\n              Este atributo exibe os primeiros 25 itens.\n              Para os demais, consulte o método `GET /bills/:id/bill_items`"},"charges":{"type":"array","items":{"$ref":"#/definitions/BillCharge"},"description":"Cobranças da fatura"},"bill_affiliates":{"type":"array","items":{"$ref":"#/definitions/BillAffiliate::Response::Full"},"description":"Lista de participantes da fatura. Este campo é exclusivo para transaçõesque contenham participantes ativos. Os participantes dividem o valorda fatura com a empresa"},"customer":{"$ref":"#/definitions/Customer::Summary","description":"Cliente da fatura"},"period":{"$ref":"#/definitions/Period::Summary","description":"Período da fatura. Este atributo permancerá nulo em faturas avulsas"},"subscription":{"$ref":"#/definitions/Subscription::Summary","description":"Assinatura associada à fatura. Este atributo permancerá nulo em faturas avulsas"},"metadata":{"type":"object","description":"Metadados da fatura"},"payment_profile":{"$ref":"#/definitions/PaymentProfile::Summary","description":"Perfil de pagamento associada à fatura. Este atributo permancerá nulo casonenhum perfil de pagamento esteja explicitamente associado à fatura."},"payment_condition":{"$ref":"#/definitions/PaymentCondition","description":"Condição de pagamento associada à fatura.\nEste atributo permancerá nulo caso nenhuma condição de pagamento\nesteja explicitamente associada à fatura.\n"},"custom_bank_slip_our_number":{"type":"string","description":"Nosso número do boleto (requer toggle CUSTOM_ITAU_SLIP_NUMBER ativo)"}},"required":["id","amount","installments","status","seen_at","url","created_at","updated_at"],"description":"O endpoint de billing permite criar produtos, clientes, perfis de pagamento e faturas avulsas em uma única chamada, simplificando o processo de cobrança.\n\nTodas as faturas seguirão as configurações de retentativa e notificações previamente configuradas na plataforma.\n\n#### Exemplo\n\nO exemplo abaixo efetua a criação de uma fatura avulsa usando apenas os atributos obrigatórios:\n\n```\n{\n  \"payment_method_code\": \"credit_card\",\n  \"customer\": {\n    \"name\": \"João Silva\",\n    \"email\": \"joao@exemplo.com\",\n    \"registry_code\": \"12345678900\",\n    \"phones_attributes\": [\n      {\n        \"phone_type\": \"mobile\",\n        \"number\": \"+5511999999999\"\n      }\n    ],\n    \"address_attributes\": {\n      \"street\": \"Rua das Flores\",\n      \"number\": \"123\",\n      \"additional_details\": \"Apto 45\",\n      \"neighborhood\": \"Centro\",\n      \"city\": \"São Paulo\",\n      \"state\": \"SP\",\n      \"zipcode\": \"01234-567\",\n      \"country\": \"BR\"\n    }\n  },\n  \"payment_profile\": {\n    \"card_number\": \"4111111111111111\",\n    \"holder_name\": \"João Silva\",\n    \"card_expiration\": \"12/25\",\n    \"card_cvv\": \"123\",\n    \"payment_company_code\": \"mastercard\"\n  },\n  \"bill_items\": [\n    {\n      \"code\": \"PROD001\",\n      \"name\": \"Produto Teste\",\n      \"amount\": 100,\n      \"pricing_schema\": {\n        \"schema_type\": \"flat\",\n        \"price\": 100\n      }\n    }\n  ],\n  \"discard_credit_card\": true\n}\n```\n\nRecomendamos que você implemente apenas estes parâmetros obrigatórios e adicione os opcionais a medida que a necessidade surgir. Normalmente o comportamento padrão da plataforma é suficiente para a maioria dos casos de uso.\n\nOs campos de antifraude são totalmente opcionais. O envio de qualquer um deles não é obrigatório e a fatura será criada normalmente sem eles. Os dados não são persistidos no banco de dados e são utilizados exclusivamente para análise de antifraude junto ao gateway.\n\n#### Dados do Cliente\n\nO billing permite criar um novo cliente automaticamente através do parâmetro `customer`. Se o cliente já existir (verificado pelo email), ele será reutilizado. Caso contrário, um novo cliente será criado com os dados fornecidos.\n\nOs dados obrigatórios do cliente são:\n- `name`: Nome completo do cliente\n- `email`: Email do cliente (usado para identificação)\n\nOs dados opcionais do cliente incluem:\n- `customer_ip`: IP do comprador para análise de antifraude (formato IPv4)\n- `registry_code`: Documento do cliente (CPF ou CNPJ) - sem pontuação\n- `date_of_birth`: Data de nascimento do cliente no formato ISO 8601 (YYYY-MM-DD). Exemplo: \"1990-05-15\"\n- `phones_attributes`: Array com telefones do cliente\n  - `phone_type`: Tipo do telefone\n  - `number`: Número do telefone completo\n- `address_attributes`: Endereço do cliente\n  - `street`: Nome da rua\n  - `number`: Número do endereço\n  - `additional_details`: Complemento (apartamento, sala, etc.)\n  - `neighborhood`: Bairro\n  - `city`: Cidade\n  - `state`: Estado (sigla de 2 letras, ex: SP, RJ, MG)\n  - `zipcode`: CEP\n  - `country`: País (sigla de 2 letras, ex: BR para Brasil)\n\n#### Dados de Entrega (Antifraude)\n\nO parâmetro `shipping` dentro de `customer` permite informar dados de entrega para análise de antifraude. Todos os campos são opcionais.\n\n- `amount`: Valor do frete (numérico). Exemplo: 15.63\n- `description`: Descrição da entrega. Exemplo: \"Entrega expressa\"\n- `recipient_name`: Nome de quem vai receber a entrega\n- `recipient_phone`: Telefone do destinatário no formato E.164. Exemplo: \"+5541999999999\"\n- `estimated_date`: Data estimada de entrega no formato ISO 8601 (YYYY-MM-DD). Exemplo: \"2026-06-30\"\n- `shipping_address`: Endereço completo de entrega\n  - `street`: Nome da rua\n  - `number`: Número do endereço\n  - `additional_details`: Complemento\n  - `neighborhood`: Bairro\n  - `city`: Cidade\n  - `state`: Estado (sigla de 2 letras, ex: SP, RJ, MG)\n  - `zipcode`: CEP (8 dígitos numéricos, ex: \"01234567\")\n  - `country`: País (sigla de 2 letras, ex: BR para Brasil)\n\nEstes dados não são persistidos no banco de dados e são utilizados exclusivamente para enriquecer a análise de antifraude junto ao gateway.\n\n#### Lista de Produtos\n\nSua fatura avulsa deve conter no mínimo um item na lista `bill_items`. Cada item deve ter um produto associado, que pode ser existente ou novo.\n\nPara produtos existentes, você deve referenciar através do parâmetro `code` do produto.\n\nPara produtos novos, você deve fornecer os dados completos do produto:\n- `code`: Código externo do produto\n- `name`: Nome do produto\n- `amount`: Valor total do item na fatura\n- `pricing_schema`: Esquema de precificação (obrigatório para produtos novos)\n\nDiferente das faturas geradas a partir de assinaturas, o valor dos itens das faturas avulsas pode ser informado através do parâmetro `amount` dentro da lista `bill_items`.\n\nOs campos opcionais por item para análise de antifraude são:\n- `sku`: SKU do produto. Exemplo: \"9919023\"\n- `category`: Código numérico da categoria do produto. Exemplo: 201\n- `description`: Descrição do produto\n\n#### Método de Pagamento\n\nCaso o método escolhido seja cartão de crédito, o billing irá validar o perfil de pagamento informado no parâmetro `payment_profile`.\n\n#### Perfil de Pagamento\n\nO billing pode criar automaticamente um perfil de pagamento para o cliente, se necessário. Isso é feito através do parâmetro `payment_profile` que deve conter os dados do cartão de crédito ou outros dados de pagamento conforme o método escolhido.\n\n**Importante**: Para métodos de pagamento que requerem perfil de pagamento (como cartão de crédito), o parâmetro `payment_profile` é obrigatório e deve conter os dados necessários para o método escolhido.\n\nPara cartão de crédito, os dados obrigatórios são:\n- `card_number`: Número do cartão\n- `card_holder_name`: Nome do titular do cartão\n- `card_expiration`: Data de expiração (formato MM/AA)\n- `card_cvv`: Código de segurança\n\nCaso o perfil de pagamento já exista, o billing irá utilizar o perfil existente, este deve ser informado pelo atributo id.\n\n#### Descartar Cartão de Crédito\n\nO parâmetro `discard_credit_card` permite controlar se o cartão de crédito deve ser descartado após a criação da fatura. Quando definido como `true`, o perfil de pagamento criado será removido automaticamente após a fatura ser criada, garantindo que os dados do cartão não sejam armazenados permanentemente na plataforma.\n\nEsta funcionalidade é especialmente útil para casos onde você deseja processar um pagamento único sem manter os dados do cartão para futuras cobranças, aumentando a segurança e conformidade com regulamentações de proteção de dados.\n\n#### Condição de Pagamento\n\nPor padrão, a condição de pagamento configurada no método de pagamento será utilizada para emitir a cobrança da fatura avulsa.\n\nSe desejar customizar a condição para uma fatura específica, informe o parâmetro `payment_condition`.\n\nCaso você receba um erro no atributo `payment_condition` informando que o mesmo é inválido, verifique se os dados de data de vencimento `due_at`, data de agendamento `billing_at` e desconto por pontualidade `payment_condition.payment_condition_discounts.days_before_due` estão válidos. O valor da data do limite de desconto não pode ser retroativa, sendo assim, é possível que o parâmetro `payment_condition` fique inválido mesmo que não tenha sido informado, visto que as informações do método de pagamento escolhido serão utilizadas por padrão.\n\n#### Nosso Número do Boleto\n\nO parâmetro `custom_bank_slip_our_number` permite que o cliente defina o número de identificação do título ao invés de usar a geração automática da Vindi.\n\nApenas números são aceitos, com um máximo de **8 caracteres** e valores no range de **1** a **99999999**.\n\nDeve ser único por método de pagamento.\n\nCampo aplicado apenas para boletos emitidos pelo Itaú (online).\n\n**Validações e comportamentos:**\n\nTodos os zeros à esquerda serão automaticamente removidos para evitar problemas na conciliação.\nExemplo: Se enviado \"00012345\", será processado como \"12345\".\n\n\n**Observações importantes:**\n\n- Se não informado, a Vindi gerará automaticamente o número sequencial.\n- É fundamental que o cliente mantenha um controle rigoroso de numeração para prevenir falhas por duplicação.\n"},"postV1ThreeDSecureSessionsValidate":{"type":"object","properties":{"authentication_transaction_id":{"type":"string","description":"Identificador da autenticação retornado em `/sessions/enroll`. **Obrigatório**."},"card_type":{"type":"string","description":"Bandeira do cartão para refinar a consulta (`visa`, `mastercard`, `elo`, `amex`, `hipercard`, `diners`). Opcional."}},"required":["authentication_transaction_id"],"description":"Valida resultado do desafio 3DS 2.0"},"ThreeDSecure::Response::Validate":{"type":"object","properties":{"status":{"type":"string","description":"Status da autenticação"},"consumer_authentication_information":{"type":"hash","description":"Informações da autenticação"},"liability_shift":{"type":"boolean","description":"Valida existência de liability shift para o perfil do pagador"}},"description":"Finaliza o fluxo de autenticação **3D Secure 2.0**, consultando o resultado do desafio (challenge) e retornando o `status` final, `liability shift` e os dados de autenticação necessários para envio à adquirente na transação.\n\nEste endpoint deve ser chamado **após** o retorno do iframe de challenge no `return_url` informado em [`/sessions/enroll`](#tag/three_d_secure/operation/post-v1-three_d_secure-sessions-enroll), utilizando o `authentication_transaction_id` recebido naquela etapa.\n\n#### Quando chamar\n\n- **Frictionless** (`challenge_required = false` no enroll): **não é necessário** chamar `/validate`. Os dados de autenticação já vieram em `consumer_authentication_information` do enroll.\n- **Challenge** (`challenge_required = true` no enroll): **obrigatório** chamar `/validate` após o callback de retorno do iframe.\n\n#### Exemplo de requisição\n\n```json\n{\n  \"authentication_transaction_id\": \"auth_8aa8b3c2c8\",\n  \"card_type\": \"visa\"\n}\n```\n\n#### Exemplo de resposta — sucesso\n\n```json\n{\n  \"status\": \"AUTHENTICATION_SUCCESSFUL\",\n  \"consumer_authentication_information\": {\n    \"cavv\": \"AAABBWcSNIdjeUZThmNHAAAAAAA=\",\n    \"xid\": \"MGpHWmpiNVZpbjAwODEzbDdGVzA=\",\n    \"eci\": \"05\",\n    \"specification_version\": \"2.2.0\",\n    \"directory_server_transaction_id\": \"f38e6948-5388-41a6-bca4-b49723c19437\"\n  },\n  \"liability_shift\": true\n}\n```\n\n#### Status possíveis\n\n| `status` | Significado | `liability_shift` |\n|---|---|---|\n| `AUTHENTICATION_SUCCESSFUL` | Autenticação concluída com sucesso | `true` |\n| `AUTHENTICATION_ATTEMPTED` | Emissor não conseguiu autenticar mas atestou tentativa | `true` |\n| `AUTHENTICATION_FAILED` | Autenticação falhou (cartão inválido, comprador desistiu) | `false` |\n| `AUTHENTICATION_REJECTED` | Emissor rejeitou explicitamente a transação | `false` |\n\n#### Como utilizar o resultado na transação\n\nOs campos retornados em `consumer_authentication_information` (`cavv`, `xid`, `eci`, `specification_version`, `directory_server_transaction_id`) devem ser enviados na chamada de captura/autorização da transação para que a adquirente reconheça a transação como autenticada e aplique o `liability shift`.\n"},"postV1ThreeDSecureSessionsEnroll":{"type":"object","properties":{"session_id":{"type":"string","description":"ID da sessão 3DS obtido em `/sessions/setup`. **Obrigatório**."},"amount":{"type":"integer","format":"int32","description":"Valor da transação em **centavos**. Ex.: `15000` = R$ 150,00. **Obrigatório**."},"currency":{"type":"string","description":"Moeda da transação no padrão ISO 4217. Padrão: `BRL`.","default":"BRL"},"installments":{"type":"integer","format":"int32","description":"Número de parcelas. Padrão: `1`.","default":1},"return_url":{"type":"string","description":"URL para onde o navegador será redirecionado após o challenge. **Obrigatória quando `challenge_required = true`**."},"device_info":{"type":"object","description":"Informações do dispositivo do comprador coletadas no checkout (browser fingerprint). **Obrigatório**.","properties":{"ip_address":{"type":"string","description":"IP público do cliente (IPv4 ou IPv6). **Obrigatório**."},"user_agent":{"type":"string","description":"User-Agent completo do navegador. **Obrigatório**."},"accept_header":{"type":"string","description":"Conteúdo do header HTTP `Accept` enviado pelo navegador."},"color_depth":{"type":"integer","format":"int32","description":"Profundidade de cor da tela em bits (ex.: 24, 32)."},"screen_height":{"type":"integer","format":"int32","description":"Altura da tela em pixels."},"screen_width":{"type":"integer","format":"int32","description":"Largura da tela em pixels."},"timezone_offset":{"type":"integer","format":"int32","description":"Offset do fuso horário em minutos (ex.: -180 para BRT)."},"language":{"type":"string","description":"Idioma do navegador no formato BCP 47 (ex.: `pt-BR`)."},"java_enabled":{"type":"Boolean","description":"Indica se o navegador tem Java habilitado."}},"required":["ip_address","user_agent"]},"billing_address":{"type":"object","description":"Endereço de cobrança e dados do titular do cartão. **Obrigatório**.","properties":{"name":{"type":"string","description":"Nome completo do titular do cartão. **Obrigatório**."},"email":{"type":"string","description":"E-mail do titular do cartão. **Obrigatório**."},"street":{"type":"string","description":"Logradouro (rua/avenida)."},"number":{"type":"string","description":"Número do endereço."},"additional_details":{"type":"string","description":"Complemento do endereço (apartamento, bloco, referência)."},"city":{"type":"string","description":"Cidade."},"state":{"type":"string","description":"UF/Estado (ex.: `SP`)."},"postal_code":{"type":"string","description":"CEP (apenas dígitos preferencialmente)."},"country":{"type":"string","description":"País no padrão ISO 3166-1 alpha-2. Padrão: `BR`.","default":"BR"},"phone":{"type":"string","description":"Telefone do titular."}},"required":["name","email"]},"client_reference_code":{"type":"string","description":"Código externo (`bill_id`, `charge_id`, número do pedido) usado para lastrear a transação no autenticador. Recomendado para conciliação."},"buyer_information":{"type":"object","description":"Informações do comprador exigidas pela especificação 3DS 2.0. **Obrigatório (ST-6658)**.","properties":{"registry_code":{"type":"string","description":"CPF ou CNPJ do pagador, **apenas dígitos**. Obrigatório a partir do 3DS 2.0 (`buyerInformation.merchantCustomerId` na Cybersource). **Obrigatório (ST-6658)**."},"mobile_phone":{"type":"string","description":"Telefone celular no formato E.164 (ex.: `+5511999999999`)."}},"required":["registry_code"]},"merchant_information":{"type":"object","description":"Informações do lojista exibidas ao comprador durante o desafio 3DS. **Obrigatório (ST-6658)**.","properties":{"merchant_name":{"type":"string","description":"Nome/Razão Social do lojista. Será exibido na tela de desafio do banco emissor. **Obrigatório (ST-6658)**."},"url":{"type":"string","description":"URL do site do lojista (com `https://`). **Obrigatório (ST-6658)**."}},"required":["merchant_name","url"]}},"required":["session_id","amount","device_info","billing_address","buyer_information","merchant_information"],"description":"Verifica elegibilidade e inicia autenticação 3DS 2.0"},"ThreeDSecure::Response::Enroll":{"type":"object","properties":{"status":{"type":"string","description":"Status da autenticação"},"authentication_transaction_id":{"type":"string","description":"ID da transação de autenticação"},"card_enrolled":{"type":"boolean","description":"Cartão está inscrito no 3DS"},"liability_shift":{"type":"boolean","description":"Transferência de responsabilidade"},"veres_enrolled":{"type":"string","description":"Status de inscrição (Y/N/U/B)"},"consumer_authentication_information":{"type":"object","description":"Dados da autenticação"},"challenge_required":{"type":"boolean","description":"Requer desafio"},"step_up_url":{"type":"string","description":"URL do iframe de desafio"},"access_token":{"type":"string","description":"Token de acesso para o desafio"},"pareq":{"type":"string","description":"PAReq para 3DS 1.0"},"acs_url":{"type":"string","description":"URL do ACS para 3DS 1.0"},"reason":{"type":"string","description":"Razão quando não elegível"},"error_details":{"type":"object","description":"Detalhes do erro"},"authentication_skipped":{"type":"boolean","description":"Autenticação ignorada por valor mínimo"},"minimum_amount":{"type":"number","description":"Valor mínimo configurado para autenticação"}},"description":"Verifica a elegibilidade do cartão para autenticação **3D Secure 2.0** e inicia o fluxo de autenticação junto à bandeira/emissor. Esta é a **segunda etapa** do fluxo, executada após o Device Data Collection.\n\nEsta chamada também envia ao gateway autenticador (Cybersource) os dados obrigatórios do **comprador** (`buyer_information`), do **lojista** (`merchant_information`) e o **código de referência externo** (`client_reference_code`), conforme exigência da especificação 3DS 2.0 brasileira.\n\n#### Possíveis fluxos de resposta\n\n| Cenário | `status` | `challenge_required` | Próxima ação |\n|---|---|---|---|\n| Autenticação frictionless (sem desafio) | `AUTHENTICATION_SUCCESSFUL` | `false` | Capturar transação. `liability_shift = true` |\n| Desafio (challenge) requerido | `PENDING_AUTHENTICATION` | `true` | Renderizar iframe com `step_up_url` |\n| Cartão não inscrito no 3DS | `AUTHENTICATION_FAILED` | `false` | `liability_shift = false`. Decidir aceitar/recusar |\n| Valor abaixo do mínimo configurado | `AUTHENTICATION_SKIPPED` | `-` | Seguir para captura sem 3DS |\n\n#### Campos obrigatórios introduzidos pelo 3DS 2.0 (ST-6658)\n\nA partir da especificação Cybersource para o Brasil, os seguintes campos passaram a ser **obrigatórios** no payload de enrollment. A ausência de qualquer um deles retorna **422 Unprocessable Entity**.\n\n| Campo | Descrição | Equivalente Cybersource |\n|---|---|---|\n| `buyer_information.registry_code` | CPF/CNPJ do pagador (apenas dígitos) | `buyerInformation.merchantCustomerId` |\n| `merchant_information.merchant_name` | Razão social do lojista (aparece no desafio) | `merchantInformation.merchantDescriptor.name` |\n| `merchant_information.url` | URL do site do lojista | `merchantInformation.merchantDescriptor.url` |\n| `client_reference_code` | Código externo para lastreamento da transação | `clientReferenceInformation.code` |\n\n\u003e Os dados de **adquirente** (`acquirerBin`, `merchantId` do adquirente) e o `mcc` do lojista são injetados internamente pelo Gateway Vindi através do plugin _“autenticação 3DS 2.0”_ — **não devem ser enviados** pelo merchant nesta chamada.\n\n#### Exemplo de requisição\n\n```json\n{\n  \"session_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"amount\": 15000,\n  \"currency\": \"BRL\",\n  \"installments\": 1,\n  \"return_url\": \"https://minhaloja.com/checkout/3ds-return\",\n  \"client_reference_code\": \"bill_874306252\",\n  \"device_info\": {\n    \"ip_address\": \"192.168.1.1\",\n    \"user_agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"timezone_offset\": -180,\n    \"language\": \"pt-BR\"\n  },\n  \"billing_address\": {\n    \"name\": \"João da Silva\",\n    \"email\": \"joao@email.com\",\n    \"street\": \"Rua Exemplo\",\n    \"number\": \"123\",\n    \"additional_details\": \"Apto 45\",\n    \"city\": \"São Paulo\",\n    \"state\": \"SP\",\n    \"postal_code\": \"01310100\",\n    \"country\": \"BR\"\n  },\n  \"buyer_information\": {\n    \"registry_code\": \"32412390884\",\n    \"mobile_phone\": \"+5511999999999\"\n  },\n  \"merchant_information\": {\n    \"merchant_name\": \"LOJA EXEMPLO SA\",\n    \"url\": \"https://www.lojaexemplo.com.br\"\n  }\n}\n```\n\n#### Exemplo de resposta — challenge requerido\n\n```json\n{\n  \"enroll\": {\n    \"status\": \"PENDING_AUTHENTICATION\",\n    \"authentication_transaction_id\": \"auth_8aa8b3c2c8\",\n    \"card_enrolled\": true,\n    \"liability_shift\": false,\n    \"veres_enrolled\": \"Y\",\n    \"challenge_required\": true,\n    \"step_up_url\": \"https://centinelapistag.cardinalcommerce.com/V2/Cruise/StepUp\",\n    \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n  }\n}\n```\n\n#### Renderização do iframe de Challenge\n\nQuando `challenge_required = true`, o lojista deve renderizar o iframe do desafio na tela de checkout, submetendo o `access_token` no formato `JWT` por `POST` para `step_up_url`. Ao final, o emissor irá redirecionar o navegador para o `return_url` informado nesta chamada.\n\n```html\n\u003ciframe id=\"step-up-iframe\" name=\"step-up-iframe\" width=\"400\" height=\"400\"\u003e\u003c/iframe\u003e\n\n\u003cform id=\"step-up-form\" target=\"step-up-iframe\" method=\"POST\"\n      action=\"\u003c%= enroll.step_up_url %\u003e\"\u003e\n  \u003cinput type=\"hidden\" name=\"JWT\" value=\"\u003c%= enroll.access_token %\u003e\" /\u003e\n\u003c/form\u003e\n\n\u003cscript\u003edocument.getElementById('step-up-form').submit();\u003c/script\u003e\n```\n\nApós o `POST` no `return_url`, chame [`/sessions/validate`](#tag/three_d_secure/operation/post-v1-three_d_secure-sessions-validate) com o `authentication_transaction_id` para obter o resultado final.\n\n#### Tabela de erros (HTTP 422)\n\n| `errors[0].code` | Significado |\n|---|---|\n| `THREE_DS_VALIDATION_ERROR` | Campo obrigatório ausente ou inválido |\n| `THREE_DS_SESSION_EXPIRED` | Sessão 3DS expirada — chamar `/setup` novamente |\n| `THREE_DS_INVALID_SESSION` | Sessão não pertence ao merchant ou já consumida |\n| `THREE_DS_ENROLLMENT_ERROR` | Falha genérica de enrollment |\n| `THREE_DS_GATEWAY_ERROR` | Erro de comunicação com o autenticador (502 quando sistêmico) |\n"},"postV1ThreeDSecureSessionsSetup":{"type":"object","properties":{"payment_profile_id":{"type":"integer","format":"int32","description":"ID do perfil de pagamento (cartão de crédito) já cadastrado no cliente. **Obrigatório**."},"payment_method_code":{"type":"string","description":"Código identificador do método de pagamento. Quando omitido, usa o método associado ao `payment_profile`. Ex.: `credit_card`."}},"required":["payment_profile_id"],"description":"Inicializa sessão 3DS 2.0"},"ThreeDSecure::Response::Setup":{"type":"object","properties":{"session_id":{"type":"string","description":"Id da sessão"},"device_data_collection_url":{"type":"string","description":"URL para coleta dos dados do dispositivo"},"access_token":{"type":"string","description":"Token de acesso"},"expires_at":{"type":"string","description":"Data de expiração da sessão"},"reference_id":{"type":"string","description":"Id de referência da autenticação"}},"description":"Inicializa uma sessão de autenticação **3D Secure 2.0** para um perfil de pagamento já cadastrado na Vindi. Esta é a **primeira etapa** do fluxo 3DS via API e deve ser executada antes da coleta dos dados do dispositivo (Device Data Collection - DDC).\n\nA sessão retornada possui validade limitada e deve ser utilizada na etapa de [Enrollment](#tag/three_d_secure/operation/post-v1-three_d_secure-sessions-enroll).\n\n#### Fluxo recomendado de integração\n\n```\nSetup ──▶ Device Data Collection (iframe oculto) ──▶ Enroll ──▶ [Challenge iframe (opcional)] ──▶ Validate\n```\n\n1. **Setup** (este endpoint): cria a sessão 3DS e devolve `session_id`, `access_token` e `device_data_collection_url`.\n2. **Device Data Collection**: o `device_data_collection_url` deve ser renderizado em um `\u003ciframe\u003e` oculto no checkout para coletar o fingerprint do dispositivo (browser, IP, fuso, idioma).\n3. **Enroll**: após DDC, o checkout chama `/sessions/enroll` para verificar elegibilidade e iniciar a autenticação.\n4. **Challenge** (quando exigido pelo emissor): renderizar o `step_up_url` como `\u003ciframe\u003e` visível com `POST` oculto carregando `access_token`.\n5. **Validate**: ao receber o callback do `return_url`, chamar `/sessions/validate` para finalizar a autenticação.\n\n#### Exemplo de requisição\n\n```json\n{\n  \"payment_profile_id\": 12345,\n  \"payment_method_code\": \"credit_card\"\n}\n```\n\n#### Exemplo de resposta\n\n```json\n{\n  \"setup\": {\n    \"session_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"device_data_collection_url\": \"https://centinelapi.cardinalcommerce.com/V1/Cruise/Collect\",\n    \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"expires_at\": \"2026-05-20T12:30:00Z\",\n    \"reference_id\": \"ref_abc123\"\n  }\n}\n```\n\n#### Renderização do iframe de Device Data Collection\n\n```html\n\u003ciframe id=\"ddc-iframe\" name=\"ddc-iframe\" style=\"display:none;\"\u003e\u003c/iframe\u003e\n\n\u003cform id=\"ddc-form\" target=\"ddc-iframe\" method=\"POST\"\n      action=\"https://centinelapi.cardinalcommerce.com/V1/Cruise/Collect\"\u003e\n  \u003cinput type=\"hidden\" name=\"JWT\" value=\"\u003c%= setup.access_token %\u003e\" /\u003e\n\u003c/form\u003e\n\n\u003cscript\u003edocument.getElementById('ddc-form').submit();\u003c/script\u003e\n```\n\n#### Disponibilidade\n\nA funcionalidade 3DS 2.0 requer ativação da feature flag pela equipe Vindi e configuração do gateway autenticador no painel administrativo.\n"},"PaymentProfile::Parameters::Public":{"type":"object","properties":{"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number":{"type":"string","description":"Número completo do cartão de crédito"},"card_cvv":{"type":"string","description":"Código de segurança do cartão de crédito com 3 ou 4 dígitos"},"token":{"type":"string"},"card_token":{"type":"string"},"gateway_id":{"type":"string"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código do banco ou bandeira"}}},"postV1PublicPaymentProfiles":{"type":"object","properties":{"body":{"type":"Public"},"holder_name":{"type":"string","description":"Nome do titular/portador do perfil de pagamento"},"registry_code":{"type":"string","description":"CPF ou CNPJ do titular/portador"},"bank_branch":{"type":"string","description":"Agência da conta bancária"},"bank_account":{"type":"string","description":"Número da conta bancária"},"card_expiration":{"type":"string","description":"Validade do cartão de crédito no formato MM/AA"},"allow_as_fallback":{"type":"boolean","description":"Permite utilizar o perfil de pagamento em retentativas de cobranças não pagas."},"card_number":{"type":"string","description":"Número completo do cartão de crédito"},"card_cvv":{"type":"string","description":"Código de segurança do cartão de crédito com 3 ou 4 dígitos"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"},"payment_company_code":{"type":"string","description":"Código do banco ou bandeira"}},"description":"Cadastra um novo perfil de pagamento"},"PaymentProfile::Public":{"type":"object","properties":{"gateway_token":{"type":"string","description":"Token externo"}},"description":"Recebe os dados criptografados do token do Apple Pay e retorna um `gateway_token` para ser utilizado na criação da fatura.\nO campo `holder_name` é opcional, porém recomendamos seu preenchimento. Se esse campo não for enviado e também não estiver presente no token recebido do Apple Pay, ocorrerá um erro na criação do perfil de pagamento.\n"},"ApplePay::MerchantSession::Parameters::Create":{"type":"object","properties":{"validation_url":{"type":"string","description":"URL de validação (validationURL por evento onvalidatemerchant)"}},"required":["validation_url"]},"postV1PublicWalletsApplePayMerchantValidation":{"type":"object","properties":{"body":{"type":"Create"},"validation_url":{"type":"string","description":"URL de validação (validationURL por evento onvalidatemerchant)"}},"required":["validation_url"],"description":"Validação do merchant para Apple Pay"},"ApplePay::MerchantSession::Response::Create":{"type":"object","properties":{"merchant_session":{"type":"object","properties":{"merchantSessionIdentifier":{"type":"string","description":"Identificador da sessão merchant Apple Pay"},"epochTimestamp":{"type":"integer","format":"int32","description":"Timestamp da sessão"},"expiresAt":{"type":"integer","format":"int32","description":"Timestamp de expiração da sessão"},"nonce":{"type":"string","description":"Nonce da sessão"},"merchantIdentifier":{"type":"string","description":"Identificador do merchant"},"domainName":{"type":"string","description":"Domínio registrado para Apple Pay"},"displayName":{"type":"string","description":"Nome de exibição do merchant"},"signature":{"type":"string","description":"Assinatura da sessão"},"retries":{"type":"integer","format":"int32","description":"Número de tentativas de validação"}}}},"description":"Este endpoint é responsável por realizar a etapa de [validação do merchant para o Apple Pay](https://developer.apple.com/documentation/applepayontheweb/providing-merchant-validation).\n\nO endpoint recebe uma URL de validação (validationURL) e retorna um `merchant_session` válido por 5 minutos.\n\nO objeto de resposta deve ser utilizado para completar a validação do merchant no seu frontend.\n"},"ApplePay::Parameters::Token":{"type":"object","properties":{"merchantSessionIdentifier":{"type":"string","description":"Identificador da sessão merchant Apple Pay"},"version":{"type":"string","description":"Versão do token (EC_v1)"},"data":{"type":"string","description":"Dados de pagamento criptografados (Base64)"},"signature":{"type":"string","description":"Assinatura PKCS #7 (Base64)"},"publicKeyHash":{"type":"string","description":"Hash SHA-256 da chave pública do merchant (Base64)"},"transactionId":{"type":"string","description":"ID da transação gerado no dispositivo"},"ephemeralPublicKey":{"type":"string","description":"Chave pública efêmera (Base64)"},"holder_name":{"type":"string","description":"Nome do titular do cartão (fallback quando ausente no token)"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"}},"required":["version","data","signature","publicKeyHash","transactionId","ephemeralPublicKey"]},"postV1PublicWalletsApplePayToken":{"type":"object","properties":{"body":{"type":"Token"},"merchantSessionIdentifier":{"type":"string","description":"Identificador da sessão merchant Apple Pay"},"version":{"type":"string","description":"Versão do token (EC_v1)"},"data":{"type":"string","description":"Dados de pagamento criptografados (Base64)"},"signature":{"type":"string","description":"Assinatura PKCS #7 (Base64)"},"publicKeyHash":{"type":"string","description":"Hash SHA-256 da chave pública do merchant (Base64)"},"transactionId":{"type":"string","description":"ID da transação gerado no dispositivo"},"ephemeralPublicKey":{"type":"string","description":"Chave pública efêmera (Base64)"},"holder_name":{"type":"string","description":"Nome do titular do cartão (fallback quando ausente no token)"},"payment_method_code":{"type":"string","description":"Código do método de pagamento"}},"required":["version","data","signature","publicKeyHash","transactionId","ephemeralPublicKey"],"description":"Processa o token de pagamento Apple Pay e cria um perfil de pagamento"}}}