{"_id":"57851e6b5ae9c20e00bc262d","githubsync":"","user":"57601a13af3e090e00108059","category":{"_id":"5783f8755cbce30e0074e2b8","version":"575aeffae12cf20e002f306f","__v":0,"project":"575aeffae12cf20e002f306c","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-07-11T19:50:13.133Z","from_sync":false,"order":6,"slug":"carnês","title":"Carnês"},"project":"575aeffae12cf20e002f306c","version":{"_id":"575aeffae12cf20e002f306f","project":"575aeffae12cf20e002f306c","__v":31,"createdAt":"2016-06-10T16:51:06.080Z","releaseDate":"2016-06-10T16:51:06.080Z","categories":["575aeffae12cf20e002f3070","575af039a083950e004487f7","575af5c7ba4ed70e000ca288","57602fe5b82256240055c657","57602ff6c811102000cef302","576030909b1a9a220067ca40","57604518b82256240055c722","5761a63d207db7170022fc14","5761b9a2b65324200072d79e","576832939f0bf4190014ffdf","576832c09f0bf4190014ffe1","576832cba151c10e004316f0","576832d5bb15f40e00a288ec","576832e107b1f30e0039c645","577680bf3cee3a0e00a000bc","577ff3b1ff48990e000c6806","5783f78c5cbce30e0074e2b7","5783f86292edb92200e6101c","5783f86dbfbba719003f0d8b","5783f8755cbce30e0074e2b8","5783f8b65cbce30e0074e2b9","5783f8bf5cbce30e0074e2ba","5783f8d8ce802f0e0087d574","578529f887c9280e0090394b","57852aeb87c9280e0090394d","57866e72b2f4060e00fa39ca","57ab6d5c39c2fd1900191879","57f39451ab0ee12000bef915","582499a0d90fa027009b259e","58c29df1258e5a1900b60478","5a7c4127490e52002a7f643c"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"2016","version_clean":"1.0.0","version":"1"},"__v":35,"parentDoc":null,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-07-12T16:44:27.807Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":2,"body":"Existem outros endpoints (serviços) disponíveis na API e que podem ser utilizados em carnês:\n\n1. [Retornar informações sobre um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-1-retornar-informa-es-sobre-um-carn-)\n\n2. [Alterar URL de notificação (notification_url) e/ou custom_id de carnês](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-2-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-carn-s)\n\n3. [Alterar data de vencimento de parcela do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-3-alterar-data-de-vencimento-de-parcela-do-carn-)\n\n4. [Cancelar um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-4-cancelar-um-carn-)\n\n5. [Cancelar parcela específica de carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-5-cancelar-parcela-espec-fica-de-carn-)\n\n6. [Reenviar carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-6-reenviar-carn-por-e-mail)\n\n7. [Reenviar parcela específica de carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-7-reenviar-parcela-espec-fica-de-carn-por-e-mail)\n\n8. [Acrescentar informações ao histórico do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-8-acrescentar-informa-es-ao-hist-rico-do-carn-)\n\n9. [Marcar como pago determinada parcela de carnê](https://dev.gerencianet.com.br/docs/marcar-como-pago#section-2-2-marcar-como-pago-determinada-parcela-de-carn-) \n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Antes de prosseguir, certifique-se de que a SDK da Gerencianet foi instalada\",\n  \"body\": \"O restante desta página apresenta os procedimentos detalhados, mas você precisa [instalar uma de nossas bibliotecas](https://dev.gerencianet.com.br/docs#section-2-bibliotecas) em seu servidor para executar os códigos de exemplo.\"\n}\n[/block]\n# 1) Retornar informações sobre um carnê\n\nRetorna informações sobre um carnê criado. Cada transação criada via carnê possui uma única chave identificadora que a identifica.\n\nPara retornar informações de um carnê, você deve enviar uma requisição <code>GET</code> para a rota <code>/v1/carnet/:id</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado\\n$params = [\\n  'id' => $carnet_id\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $carnet = $api->detailCarnet($params, []);\\n    print_r($carnet);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n\\tclient_id: credentials.client_id,\\n\\tclient_secret: credentials.client_secret,\\n\\tsandbox: true\\n}\\n\\nvar params = {\\n\\tid: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n\\t.detailCarnet(params)\\n\\t.then(console.log)\\n\\t.catch(console.log)\\n\\t.done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1000\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.detail_carnet(params: params)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nresponse =  gn.detail_carnet(params=params)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class DetailCarnet\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new\\n            {\\n                id = 1014\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.DetailCarnet(param);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/Detail.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/Detail.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction DetailCarnet(CarnetID: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\n\\nfunction DetailCarnet(CarnetID: String): String;\\nvar\\n  DetailParams: String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize(); \\n\\n    DetailParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'detailCarnet',DetailParams, '', '' );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.DetailCarnet(1) // no lugar do 1 coloque o carnet_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 2) Alterar URL de notificação (notification_url) e/ou custom_id de carnês\n\nÉ possível definir ou alterar as informações enviadas na propriedade <code>metadata</code> de um carnê a qualquer momento. Este endpoint é de **extrema importância** para atualizar sua URL de notificação atrelada ao carnê ou modificar o <code>custom_id</code> previamente associado ao seu carnê.\n\nPara alterar a <code>notification_url</code> e/ou <code>custom_id</code> de um carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/metadata</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado.\n\n**Casos de uso deste endpoint:**\n\n- Integrador alterou o IP do servidor que estava associado na URL de notificação dos carnês;\n\n- Integrador atualizou a URL de notificação para as novas emissões que forem criadas (<code>createCarnet</code>), mas precisa atualizar também nas transações anteriores (<code>updateCarnetMetadata</code>) que foram geradas e que estão associadas com a URL incorreta/desatualizada;\n\n- Foi instalado SSL (https) no servidor do cliente e mesmo que o cliente defina uma regra de redirecionamento 301 ou 302, será preciso definir a nova URL nos carnês que estão com a URL \"antiga\";\n\n- Integrador gerou cobranças e não havia informado a URL de notificação ao enviar a requisição de criação dos carnês;\n\n- Modificar ou acrescentar uma informação junto ao atributo <code>custom_id</code> associado aos carnês gerados previamente;\n\n- Dentre outros possíveis cenários.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_metadata\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado\\n$params = [\\n  'id' => $carnet_id\\n];\\n\\n$body = [\\n\\t'custom_id' => 'Carnê 0001',\\n\\t'notification_url' => 'http://domain.com/notification'\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $carnet = $api->updateCarnetMetadata($params, $body);\\n    print_r($carnet);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\",\n      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n  client_id: credentials.client_id,\\n  client_secret: credentials.client_secret,\\n  sandbox: true\\n}\\n\\nvar params = {\\n  id: 1004\\n}\\n\\nvar body = {\\n  notification_url: 'http://yourdomain.com',\\n  custom_id: 'my_new_id'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .updateCarnetMetadata(params, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1004\\n}\\n\\nbody = {\\n  notification_url: \\\"http://yourdomain.com\\\",\\n  custom_id: \\\"my_new_id\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.update_carnet_metadata(params: params, body: body)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nbody = {\\n    'notification_url': 'http://yourdomain.com',\\n    'custom_id': 'my_new_id'\\n}\\n\\nresponse =  gn.update_carnet_metadata(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\",\n      \"name\": \"Python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class UpdateCarnetMetadata\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new\\n            {\\n                id = 1001\\n            };\\n\\n            var body = new\\n            {\\n                notification_url = \\\"http://yourdomain.com\\\",\\n                custom_id = \\\"my_new_id\\\"\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.UpdateCarnetMetadata(param, body);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/updateMetadata.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/updateMetadata.java\\n\\n*/\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"interface\\nfunction UpdateCarnetMetadata(CarnetID: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\n\\nfunction UpdateCarnetMetadata(CarnetID: String): String;\\nvar\\n  Body : String;\\n  UpdateParcelParams : String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize(); \\n\\n    UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\\n    Body := '{\\\"custom_id\\\": \\\"Carnet 0001\\\", \\\"notification_url\\\" : \\\"http://domain.com/notification\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'updateCarnetMetadata',UpdateParcelParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"custom_id\\\": \\\"Product 0001\\\",\\n\\t\\t\\\"notification_url\\\": \\\"http://domain.com/notification\\\",\\n\\t}\\n\\n\\tres, err := gn.UpdateCarnetMetadata(1, body) // no lugar do 1 coloque o charge_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/CarnetMetadataUpdate\"\n    \"notification_url\"\n    \"custom_id\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_metadata) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para atualizar URL de notificação e/ou custom_id\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributos\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>notification_url</code>\",\n    \"1-0\": \"<code>custom_id</code>\",\n    \"0-1\": \"Endereço de sua URL válida que receberá as notificações de mudanças de status do carnê e de suas parcelas.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255.</span></strong>\",\n    \"1-1\": \"Permite associar um carnê  Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-lo caso você possua uma identificação específica e queira mantê-la.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255.</span></strong>\",\n    \"0-2\": \"Não\",\n    \"1-2\": \"Não\",\n    \"0-3\": \"String/null\",\n    \"1-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n<br>\n<hr>\n\n# 3) Alterar data de vencimento de parcela do carnê\n\nPossibilita alterar a data de vencimento de uma determinada parcela de um carnê. Somente parcelas que estejam com status <code>waiting</code> ou <code>unpaid</code> podem ter suas datas de vencimento alteradas.\n\nPara tal, é necessário que você informe o <code>carnet_id</code>, a parcela que deseja alterar e a <code>expire_at</code> (nova data de vencimento, no formato YYYY-MM-DD).\n\nPara alterar a data de vencimento de uma parcela específica de um carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/parcel/:parcel</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado e <code>:parcel</code> é o número da parcela que deseja atualizar a data de vencimento (por exemplo: <code>3</code> - se for a terceira parcela que você deseja alterar o vencimento).\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado e parcel indica o número da parcela desejada\\n$params = ['id' => $carnet_id, 'parcel' => 1];\\n\\n$body = [\\n\\t'expire_at' => '2018-01-01'\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $carnet = $api->updateParcel($params, $body);\\n    print_r($carnet);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\",\n      \"name\": \"PHP\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n  client_id: credentials.client_id,\\n  client_secret: credentials.client_secret,\\n  sandbox: true\\n}\\n\\nvar params = {\\n  id: 1008\\n}\\n\\nvar body = {\\n  parcel: 1,\\n  expire_at: '2020-12-12'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .updateParcel(params, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1008,\\n  parcel: 1\\n}\\n\\nbody = {\\n  expire_at: \\\"2020-12-12\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.update_parcel(params: params, body: body)\",\n      \"language\": \"ruby\",\n      \"name\": \"Ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1,\\n    'parcel': 1\\n}\\n\\nbody = {\\n    'expire_at': '2020-12-12'\\n}\\n\\nresponse =  gn.update_parcel(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class UpdateParcel\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new\\n            {\\n                id = 1001,\\n                parcel = 3,\\n            };\\n\\n            var body = new {\\n                expire_at = \\\"2020-12-20\\\"\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.UpdateParcel(param, body);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/UpdateParcel.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/UpdateParcel.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction UpdateParcel(CarnetID, CarnetParcel:  String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction UpdateParcel(CarnetID, CarnetParcel:  String): String;\\nvar\\n  Body : String;\\n  UpdateParcelParams : String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize(); \\n\\n    UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\\n    Body := '{\\\"expire_at\\\": \\\"2018-01-01\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'updateParcel',UpdateParcelParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"expire_at\\\": \\\"2021-12-12\\\",\\n\\t}\\n\\n\\tres, err := gn.UpdateParcel(1, 1, body) // no lugar dos 1s coloque o carnet_id e o numero da parcela respectivamente\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/CarnetParcelUpdate\"\n    \"expire_at\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para alterar a data de vencimento da parcela do carnê:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>expire_at</code>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\",\n    \"0-1\": \"Data de vencimento da parcela especificada do carnê. O intervalo das parcelas de um carnê é sempre de 1 (um) mês entre elas.\\n<code>Formato: YYYY-MM-DD</code>\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n<hr>\n\n# 4) Cancelar um carnê\n\nPossibilita efetuar o cancelamento de um determinado carnê. Para isso, você deve informar o <code>carnet_id</code> que deseja efetuar o cancelamento.\n\nPara cancelar um determinado carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/cancel</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_cancel\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado\\n$params = [\\n  'id' => $carnet_id\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->cancelCarnet($params, []);\\n    print_r($response);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\",\n      \"name\": null\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n  client_id: credentials.client_id,\\n  client_secret: credentials.client_secret,\\n  sandbox: true\\n}\\n\\nvar params = {\\n  id: 0\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .cancelCarnet(params)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 2363\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.cancel_carnet(params: params)\",\n      \"language\": \"ruby\",\n      \"name\": null\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nresponse = gn.cancel_carnet(params=params)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class CancelCarnet\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new\\n            {\\n                id = 0\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.CancelCarnet(param);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/CancelCarnet.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/CancelCarnet.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction CancelCarnet(CarnetID: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CancelCarnet(CarnetID: String): String;\\nvar\\n  CancelParams: String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize();\\n\\n    CancelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'cancelCarnet',CancelParams, '', '' );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.CancelCarnet(1) // no lugar do 1 coloque o carnet_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 5) Cancelar parcela específica de carnê\n\nPossibilita efetuar o cancelamento de uma parcela específica de um carnê existente. Para isso, você deve informar o <code>carnet_id</code> e o número da parcela que deseja efetuar o cancelamento.\n\nPara cancelar uma parcela específica de um carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/parcel/:parcel/cancel</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado e <code>:parcel</code> é o número da parcela que deseja cancelar (por exemplo: <code>3</code> - se for a terceira parcela que você deseja cancelar).\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_cancel\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado e parcel indica o número da parcela desejada\\n$params = ['id' => $carnet_id, 'parcel' => 1];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->cancelParcel($params, []);\\n    print_r($response);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n  client_id: credentials.client_id,\\n  client_secret: credentials.client_secret,\\n  sandbox: true\\n}\\n\\nvar params = {\\n  id: 0,\\n  parcel: 1\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .cancelParcel(params)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 2363,\\n  parcel: 1\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.cancel_parcel(params: params)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1,\\n    'parcel': 1\\n}\\n\\nresponse = gn.cancel_parcel(params=params)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class CancelParcel\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new\\n            {\\n                id = 0,\\n                parcel = 1\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.CancelParcel(param);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/CancelParcel.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/CancelParcel.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction CancelParcel(CarnetID, CarnetParcel:  String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CancelParcel(CarnetID, CarnetParcel:  String): String;\\nvar\\n  CancelParams: String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize();\\n\\n    CancelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\\n    Result := ExecuteGerenciaNetRequest( 'cancelParcel',CancelParams, '', '' );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tres, err := gn.CancelParcel(1, 1) // no lugar dos 1s coloque o carnet_id e o numero da parcela respectivamente\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n<hr>\n\n# 6) Reenviar carnê por e-mail\n\nÉ possível que o carnê seja reenviado para um endereço válido de e-mail.\n\nPara reenviar um carnê por e-mail, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/carnet/:id/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê que deseja reenviar.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_resend\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado\\n$params = [\\n  'id' => $carnet_id\\n];\\n\\n$body = [\\n  'email' => 'oldbuck:::at:::gerencianet.com.br'\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->resendCarnet($params, $body);\\n    print_r($response);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n  client_id: credentials.client_id,\\n  client_secret: credentials.client_secret,\\n  sandbox: true\\n}\\n\\nvar params = {\\n  id: 1002\\n}\\n\\nvar body = {\\n  email: 'oldbuck@gerencianet.com.br'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .resendCarnet(params, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1000\\n}\\n\\nbody = {\\n  email: 'oldbuck@gerencianet.com.br'\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.resend_carnet(params: params, body: body)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nbody = {\\n    'email': 'oldbuck@gerencianet.com.br'\\n}\\n\\nresponse =  gn.resend_carnet(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class ResendCarnet\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new\\n            {\\n                id = 1001\\n            };\\n\\n            var body = new\\n            {\\n                email = \\\"oldbuck@gerencianet.com.br\\\"\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.ResendCarnet(param, body);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/ResendCarnet.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/ResendCarnet.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction ResendCarnet(CarnetID: String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction ResendCarnet(CarnetID: String): String;\\nvar\\n  Body : String;\\n  UpdateParcelParams : String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize();\\n\\n    UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\\n    Body := '{\\\"email\\\": \\\"oldbuck@gerencianet.com.br\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'resendCarnet',UpdateParcelParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"email\\\": \\\"oldbuck@gerencianet.com.br\\\",\\n\\t}\\n\\n\\tres, err := gn.ResendCarnet(1, body) // no lugar do 1 coloque o carnet_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/CarnetResend\"\n    \"email\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_resend) e explore em nosso Playground.\n\n<br>\n\n## b) Atributo que pode ser utilizado para reenviar carnê por e-mail:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>email</code>\",\n    \"0-1\": \"Informe um endereço de e-mail válido para o qual o carnê deverá ser enviado.\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n<hr>\n\n# 7) Reenviar parcela específica de carnê por e-mail\n\nÉ possível que uma determinada parcela de um carnê seja reenviado para um endereço válido de e-mail. Para tal, você deve informar o <code>carnet_id</code> desejado.\n\nPara reenviar a parcela, esta deve estar com o status <code>waiting</code> *(isto é, \"aguardando\")*.\n\nPara reenviar uma parcela específica de um carnê por e-mail, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/carnet/:id/parcel/:parcel/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê e <code>:parcel</code> é o número da parcela que deseja reenviar por email (por exemplo: <code>3</code> - se for a terceira parcela que você deseja reenviar por e-mail).\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_resend\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado e parcel indica o número da parcela desejada\\n$params = ['id' => $carnet_id, 'parcel' => 1];\\n\\n$body = [\\n  'email' => 'oldbuck@gerencianet.com.br'\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->resendParcel($params, $body);\\n    print_r($response);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n  client_id: credentials.client_id,\\n  client_secret: credentials.client_secret,\\n  sandbox: true\\n}\\n\\nvar params = {\\n  id: 1002,\\n  parcel: 1\\n}\\n\\nvar body = {\\n  email: 'oldbuck@gerencianet.com.br'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .resendParcel(params, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1000,\\n  parcel: 1\\n}\\n\\nbody = {\\n  email: 'oldbuck@gerencianet.com.br'\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.resend_parcel(params: params, body: body)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1,\\n    'parcel': 1\\n}\\n\\nbody = {\\n    'email': 'oldbuck@gerencianet.com.br'\\n}\\n\\nresponse =  gn.resend_parcel(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class ResendParcel\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new\\n            {\\n                id = 1001,\\n                parcel = 2\\n            };\\n\\n            var body = new\\n            {\\n                email = \\\"oldbuck@gerencianet.com.br\\\"\\n            };\\n\\n            try\\n            {\\n                var response = endpoints.ResendParcel(param, body);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/ResendParcel.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/ResendParcel.java\\n\\n*/\",\n      \"language\": \"java\",\n      \"name\": \"Java\"\n    },\n    {\n      \"code\": \"interface\\nfunction ResendParcel(CarnetID, CarnetParcel:  String): String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction ResendParcel(CarnetID, CarnetParcel:  String): String;\\nvar\\n  Body : String;\\n  UpdateParcelParams : String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize();\\n\\n    UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\\n    Body := '{\\\"email\\\": \\\"oldbuck@gerencianet.com.br\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'resendParcel',UpdateParcelParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"email\\\": \\\"oldbuck@gerencianet.com.br\\\",\\n\\t}\\n\\n\\tres, err := gn.ResendParcel(1, 1, body) // no lugar dos 1s coloque o carnet_id e o numero da parcela respectivamente\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/CarnetParcelResend\"\n    \"email\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_resend) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser utilizados para reenviar parcela de carnê por e-mail:\n[block:parameters]\n{\n  \"data\": {\n    \"0-1\": \"Informe um endereço de e-mail válido para o qual o carnê deverá ser enviado.\",\n    \"0-0\": \"<code>email</code>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\",\n    \"h-3\": \"Tipo\",\n    \"h-2\": \"Obrigatório\",\n    \"h-1\": \"Descrição\",\n    \"h-0\": \"Atributo\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n<hr>\n\n# 8) Acrescentar informações ao histórico do carnê\n\nO histórico de um carnê é semelhante ao histórico de uma transação. Porém, ele reflete as ações que o carnê em si sofreu. E, da mesma forma, é possível adicionar mensagens personalizadas ao histórico de um carnê, sem que estas, contudo, influenciem no fluxo do mesmo.\n\nPara adicionar mensagens personalizadas no histórico de um carnê, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/carnet/:id/history</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado.\n\nCaso queira, pode explorar e conhecer mais sobre este recurso <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_history\" target=\"_blank\">usando nosso Playground</a>.\n\nO exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<?php\\n \\nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\\n \\nuse Gerencianet\\\\Exception\\\\GerencianetException;\\nuse Gerencianet\\\\Gerencianet;\\n \\n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\\n \\n$options = [\\n  'client_id' => $clientId,\\n  'client_secret' => $clientSecret,\\n  'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\\n];\\n\\n// $carnet_id refere-se ao ID do carnê desejado\\n$params = [\\n  'id' => $carnet_id\\n];\\n\\n$body = [\\n  'description' => 'This carnet is about a service'\\n];\\n\\ntry {\\n    $api = new Gerencianet($options);\\n    $response = $api->createCarnetHistory($params, $body);\\n    print_r($response);\\n} catch (GerencianetException $e) {\\n    print_r($e->code);\\n    print_r($e->error);\\n    print_r($e->errorDescription);\\n} catch (Exception $e) {\\n    print_r($e->getMessage());\\n}\",\n      \"language\": \"php\"\n    },\n    {\n      \"code\": \"'use strict';\\n\\nvar Gerencianet = require('gn-api-sdk-node');\\nvar credentials = require('./credentials');\\n\\nvar options = {\\n  client_id: credentials.client_id,\\n  client_secret: credentials.client_secret,\\n  sandbox: true\\n}\\n\\nvar params = {\\n  id: 1001\\n}\\n\\nvar body = {\\n  description: 'This carnet is about a service'\\n}\\n\\nvar gerencianet = new Gerencianet(options);\\n\\ngerencianet\\n  .createCarnetHistory(params, body)\\n  .then(console.log)\\n  .catch(console.log)\\n  .done();\",\n      \"language\": \"javascript\",\n      \"name\": \"NodeJS\"\n    },\n    {\n      \"code\": \"require \\\"gerencianet\\\"\\nrequire_relative \\\"./credentials\\\"\\n\\noptions = {\\n  client_id: CREDENTIALS::CLIENT_ID,\\n  client_secret: CREDENTIALS::CLIENT_SECRET,\\n  sandbox: true\\n}\\n\\nparams = {\\n  id: 1000\\n}\\n\\nbody = {\\n  description: \\\"This carnet is about a service\\\"\\n}\\n\\ngerencianet = Gerencianet.new(options)\\nputs gerencianet.create_carnet_history(params: params, body: body)\",\n      \"language\": \"ruby\"\n    },\n    {\n      \"code\": \"# encoding: utf-8\\n\\nfrom gerencianet import Gerencianet\\nfrom credentials import CREDENTIALS\\n\\ngn = Gerencianet(CREDENTIALS)\\n\\nparams = {\\n    'id': 1\\n}\\n\\nbody = {\\n    'description': 'This carnet is about a service'\\n}\\n\\nresponse =  gn.create_carnet_history(params=params, body=body)\\nprint(response)\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"using System;\\n\\nnamespace Gerencianet.SDK.Examples\\n{\\n    class CreateCarnetHistory\\n    {\\n        public static void Execute()\\n        {\\n            dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\\n\\n            var param = new {\\n                id = 1001\\n            };\\n\\n            var body = new\\n            {\\n                description = \\\"This carnet is about a service\\\"\\n            };\\n\\n\\n            try\\n            {\\n                var response = endpoints.CreateCarnetHistory(param, body);\\n                Console.WriteLine(response);\\n            }\\n            catch (GnException e)\\n            {\\n                Console.WriteLine(e.ErrorType);\\n                Console.WriteLine(e.Message);\\n            }\\n        }\\n    }\\n}\",\n      \"language\": \"asp\",\n      \"name\": \".NET\"\n    },\n    {\n      \"code\": \"/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\\n\\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \\\"body\\\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \\\"body\\\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\\n\\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \\\"body\\\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\\n\\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\\ne Map<String, Object>\\n\\n\\nJSONObject\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/CreateCarnetHistory.java\\n\\n\\nMap<String, Object>\\n\\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/CreateCarnetHistory.java\\n\\n*/\",\n      \"language\": \"java\"\n    },\n    {\n      \"code\": \"interface\\nfunction CreateCarnetHistory(CarnetID: String):: String;\\n\\nimplementation\\nuses uGerenciaClient, uGerenciaNetClientUtilities;\\n{... your code ... }\\n\\nfunction CreateCarnetHistory(CarnetID: String): String;\\nvar\\n  Body : String;\\n  UpdateParcelParams : String;\\nbegin\\n    EnableService( 'GerenciaNet.dll' ); \\n    ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \\n    GerenciaNetAuthorize();\\n\\n    UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\\n    Body := '{\\\"description\\\": \\\"This carnet is about a service\\\"}';\\n    Result := ExecuteGerenciaNetRequest( 'createCarnetHistory',UpdateParcelParams, '', Body );\\nend;\",\n      \"language\": \"json\",\n      \"name\": \"Delphi\"\n    },\n    {\n      \"code\": \"package main\\n\\nimport (\\n\\t\\\"fmt\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/gerencianet\\\"\\n\\t\\\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\\\"\\n)\\n\\nfunc main(){\\n\\t\\n\\tcredentials := configs.Credentials\\n\\tgn := gerencianet.NewGerencianet(credentials)\\n\\n\\tbody := map[string]interface{} {\\n\\t\\t\\\"description\\\": \\\"This charge was not fully paid\\\",\\n\\t}\\n\\n\\tres, err := gn.CreateCarnetHistory(1, body) // no lugar do 1 coloque o carnet_id certo\\n\\n\\tif err != nil {\\n\\t\\tfmt.Println(err)\\n\\t} else {\\n\\t\\tfmt.Println(res)\\n\\t}\\n}\",\n      \"language\": \"go\"\n    }\n  ]\n}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados:\n\n<pre>\"id\": \"/CarnetHistory\"\n    \"description\"</pre>\n\nPara verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_history) e explore em nosso Playground.\n\n<br>\n\n## b) Atributos que podem ser usados para acrescentar mensagens ao histórico do carnê:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Atributo\",\n    \"h-1\": \"Descrição\",\n    \"h-2\": \"Obrigatório\",\n    \"h-3\": \"Tipo\",\n    \"0-0\": \"<code>description</code>\",\n    \"0-2\": \"Sim\",\n    \"0-1\": \"Permite acrescentar informações ao histórico do carnê sem influenciar no fluxo do mesmo.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 caracteres.</span></strong>\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br>\n<hr>\n\n# 9. Marcar como pago determinada parcela de carnê\n\nPara detalhes sobre como marcar como pago determinada parcela de carnê, [veja neste link](https://dev.gerencianet.com.br/docs/marcar-como-pago#section-2-2-marcar-como-pago-determinada-parcela-de-carn-).","excerpt":"Você está em: *\"Carnês > Outros endpoints\"*","slug":"carnes-outros-endpoints","type":"basic","title":"Outros endpoints"}

Outros endpoints

Você está em: *"Carnês > Outros endpoints"*

Existem outros endpoints (serviços) disponíveis na API e que podem ser utilizados em carnês: 1. [Retornar informações sobre um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-1-retornar-informa-es-sobre-um-carn-) 2. [Alterar URL de notificação (notification_url) e/ou custom_id de carnês](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-2-alterar-url-de-notifica-o-notification_url-e-ou-custom_id-de-carn-s) 3. [Alterar data de vencimento de parcela do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-3-alterar-data-de-vencimento-de-parcela-do-carn-) 4. [Cancelar um carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-4-cancelar-um-carn-) 5. [Cancelar parcela específica de carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-5-cancelar-parcela-espec-fica-de-carn-) 6. [Reenviar carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-6-reenviar-carn-por-e-mail) 7. [Reenviar parcela específica de carnê por e-mail](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-7-reenviar-parcela-espec-fica-de-carn-por-e-mail) 8. [Acrescentar informações ao histórico do carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-8-acrescentar-informa-es-ao-hist-rico-do-carn-) 9. [Marcar como pago determinada parcela de carnê](https://dev.gerencianet.com.br/docs/marcar-como-pago#section-2-2-marcar-como-pago-determinada-parcela-de-carn-) [block:callout] { "type": "warning", "title": "Antes de prosseguir, certifique-se de que a SDK da Gerencianet foi instalada", "body": "O restante desta página apresenta os procedimentos detalhados, mas você precisa [instalar uma de nossas bibliotecas](https://dev.gerencianet.com.br/docs#section-2-bibliotecas) em seu servidor para executar os códigos de exemplo." } [/block] # 1) Retornar informações sobre um carnê Retorna informações sobre um carnê criado. Cada transação criada via carnê possui uma única chave identificadora que a identifica. Para retornar informações de um carnê, você deve enviar uma requisição <code>GET</code> para a rota <code>/v1/carnet/:id</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado\n$params = [\n 'id' => $carnet_id\n];\n\ntry {\n $api = new Gerencianet($options);\n $carnet = $api->detailCarnet($params, []);\n print_r($carnet);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n\tclient_id: credentials.client_id,\n\tclient_secret: credentials.client_secret,\n\tsandbox: true\n}\n\nvar params = {\n\tid: 0\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n\t.detailCarnet(params)\n\t.then(console.log)\n\t.catch(console.log)\n\t.done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1000\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.detail_carnet(params: params)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nresponse = gn.detail_carnet(params=params)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class DetailCarnet\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 1014\n };\n\n try\n {\n var response = endpoints.DetailCarnet(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/Detail.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/Detail.java\n\n*/", "language": "java" }, { "code": "interface\nfunction DetailCarnet(CarnetID: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\n\nfunction DetailCarnet(CarnetID: String): String;\nvar\n DetailParams: String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize(); \n\n DetailParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'detailCarnet',DetailParams, '', '' );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.DetailCarnet(1) // no lugar do 1 coloque o carnet_id certo\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 2) Alterar URL de notificação (notification_url) e/ou custom_id de carnês É possível definir ou alterar as informações enviadas na propriedade <code>metadata</code> de um carnê a qualquer momento. Este endpoint é de **extrema importância** para atualizar sua URL de notificação atrelada ao carnê ou modificar o <code>custom_id</code> previamente associado ao seu carnê. Para alterar a <code>notification_url</code> e/ou <code>custom_id</code> de um carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/metadata</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado. **Casos de uso deste endpoint:** - Integrador alterou o IP do servidor que estava associado na URL de notificação dos carnês; - Integrador atualizou a URL de notificação para as novas emissões que forem criadas (<code>createCarnet</code>), mas precisa atualizar também nas transações anteriores (<code>updateCarnetMetadata</code>) que foram geradas e que estão associadas com a URL incorreta/desatualizada; - Foi instalado SSL (https) no servidor do cliente e mesmo que o cliente defina uma regra de redirecionamento 301 ou 302, será preciso definir a nova URL nos carnês que estão com a URL "antiga"; - Integrador gerou cobranças e não havia informado a URL de notificação ao enviar a requisição de criação dos carnês; - Modificar ou acrescentar uma informação junto ao atributo <code>custom_id</code> associado aos carnês gerados previamente; - Dentre outros possíveis cenários. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_metadata" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado\n$params = [\n 'id' => $carnet_id\n];\n\n$body = [\n\t'custom_id' => 'Carnê 0001',\n\t'notification_url' => 'http://domain.com/notification'\n];\n\ntry {\n $api = new Gerencianet($options);\n $carnet = $api->updateCarnetMetadata($params, $body);\n print_r($carnet);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php", "name": "PHP" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n}\n\nvar params = {\n id: 1004\n}\n\nvar body = {\n notification_url: 'http://yourdomain.com',\n custom_id: 'my_new_id'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .updateCarnetMetadata(params, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1004\n}\n\nbody = {\n notification_url: \"http://yourdomain.com\",\n custom_id: \"my_new_id\"\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.update_carnet_metadata(params: params, body: body)", "language": "ruby", "name": "Ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nbody = {\n 'notification_url': 'http://yourdomain.com',\n 'custom_id': 'my_new_id'\n}\n\nresponse = gn.update_carnet_metadata(params=params, body=body)\nprint(response)", "language": "python", "name": "Python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class UpdateCarnetMetadata\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 1001\n };\n\n var body = new\n {\n notification_url = \"http://yourdomain.com\",\n custom_id = \"my_new_id\"\n };\n\n try\n {\n var response = endpoints.UpdateCarnetMetadata(param, body);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/updateMetadata.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/updateMetadata.java\n\n*/", "language": "java", "name": "Java" }, { "code": "interface\nfunction UpdateCarnetMetadata(CarnetID: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\n\nfunction UpdateCarnetMetadata(CarnetID: String): String;\nvar\n Body : String;\n UpdateParcelParams : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize(); \n\n UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\n Body := '{\"custom_id\": \"Carnet 0001\", \"notification_url\" : \"http://domain.com/notification\"}';\n Result := ExecuteGerenciaNetRequest( 'updateCarnetMetadata',UpdateParcelParams, '', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"custom_id\": \"Product 0001\",\n\t\t\"notification_url\": \"http://domain.com/notification\",\n\t}\n\n\tres, err := gn.UpdateCarnetMetadata(1, body) // no lugar do 1 coloque o charge_id certo\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/CarnetMetadataUpdate" "notification_url" "custom_id"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_metadata) e explore em nosso Playground. <br> ## b) Atributos que podem ser utilizados para atualizar URL de notificação e/ou custom_id [block:parameters] { "data": { "h-0": "Atributos", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>notification_url</code>", "1-0": "<code>custom_id</code>", "0-1": "Endereço de sua URL válida que receberá as notificações de mudanças de status do carnê e de suas parcelas.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255.</span></strong>", "1-1": "Permite associar um carnê Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-lo caso você possua uma identificação específica e queira mantê-la.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255.</span></strong>", "0-2": "Não", "1-2": "Não", "0-3": "String/null", "1-3": "String" }, "cols": 4, "rows": 2 } [/block] <br> <hr> # 3) Alterar data de vencimento de parcela do carnê Possibilita alterar a data de vencimento de uma determinada parcela de um carnê. Somente parcelas que estejam com status <code>waiting</code> ou <code>unpaid</code> podem ter suas datas de vencimento alteradas. Para tal, é necessário que você informe o <code>carnet_id</code>, a parcela que deseja alterar e a <code>expire_at</code> (nova data de vencimento, no formato YYYY-MM-DD). Para alterar a data de vencimento de uma parcela específica de um carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/parcel/:parcel</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado e <code>:parcel</code> é o número da parcela que deseja atualizar a data de vencimento (por exemplo: <code>3</code> - se for a terceira parcela que você deseja alterar o vencimento). Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado e parcel indica o número da parcela desejada\n$params = ['id' => $carnet_id, 'parcel' => 1];\n\n$body = [\n\t'expire_at' => '2018-01-01'\n];\n\ntry {\n $api = new Gerencianet($options);\n $carnet = $api->updateParcel($params, $body);\n print_r($carnet);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php", "name": "PHP" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n}\n\nvar params = {\n id: 1008\n}\n\nvar body = {\n parcel: 1,\n expire_at: '2020-12-12'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .updateParcel(params, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1008,\n parcel: 1\n}\n\nbody = {\n expire_at: \"2020-12-12\"\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.update_parcel(params: params, body: body)", "language": "ruby", "name": "Ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1,\n 'parcel': 1\n}\n\nbody = {\n 'expire_at': '2020-12-12'\n}\n\nresponse = gn.update_parcel(params=params, body=body)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class UpdateParcel\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 1001,\n parcel = 3,\n };\n\n var body = new {\n expire_at = \"2020-12-20\"\n };\n\n try\n {\n var response = endpoints.UpdateParcel(param, body);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/UpdateParcel.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/UpdateParcel.java\n\n*/", "language": "java" }, { "code": "interface\nfunction UpdateParcel(CarnetID, CarnetParcel: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction UpdateParcel(CarnetID, CarnetParcel: String): String;\nvar\n Body : String;\n UpdateParcelParams : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize(); \n\n UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\n Body := '{\"expire_at\": \"2018-01-01\"}';\n Result := ExecuteGerenciaNetRequest( 'updateParcel',UpdateParcelParams, '', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"expire_at\": \"2021-12-12\",\n\t}\n\n\tres, err := gn.UpdateParcel(1, 1, body) // no lugar dos 1s coloque o carnet_id e o numero da parcela respectivamente\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/CarnetParcelUpdate" "expire_at"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel) e explore em nosso Playground. <br> ## b) Atributos que podem ser utilizados para alterar a data de vencimento da parcela do carnê: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>expire_at</code>", "0-2": "Sim", "0-3": "String", "0-1": "Data de vencimento da parcela especificada do carnê. O intervalo das parcelas de um carnê é sempre de 1 (um) mês entre elas.\n<code>Formato: YYYY-MM-DD</code>" }, "cols": 4, "rows": 1 } [/block] <br> <hr> # 4) Cancelar um carnê Possibilita efetuar o cancelamento de um determinado carnê. Para isso, você deve informar o <code>carnet_id</code> que deseja efetuar o cancelamento. Para cancelar um determinado carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/cancel</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_cancel" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado\n$params = [\n 'id' => $carnet_id\n];\n\ntry {\n $api = new Gerencianet($options);\n $response = $api->cancelCarnet($params, []);\n print_r($response);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php", "name": null }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n}\n\nvar params = {\n id: 0\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .cancelCarnet(params)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 2363\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.cancel_carnet(params: params)", "language": "ruby", "name": null }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nresponse = gn.cancel_carnet(params=params)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class CancelCarnet\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 0\n };\n\n try\n {\n var response = endpoints.CancelCarnet(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/CancelCarnet.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/CancelCarnet.java\n\n*/", "language": "java" }, { "code": "interface\nfunction CancelCarnet(CarnetID: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction CancelCarnet(CarnetID: String): String;\nvar\n CancelParams: String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n CancelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'cancelCarnet',CancelParams, '', '' );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.CancelCarnet(1) // no lugar do 1 coloque o carnet_id certo\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 5) Cancelar parcela específica de carnê Possibilita efetuar o cancelamento de uma parcela específica de um carnê existente. Para isso, você deve informar o <code>carnet_id</code> e o número da parcela que deseja efetuar o cancelamento. Para cancelar uma parcela específica de um carnê, você deve enviar uma requisição <code>PUT</code> para a rota <code>/v1/carnet/:id/parcel/:parcel/cancel</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado e <code>:parcel</code> é o número da parcela que deseja cancelar (por exemplo: <code>3</code> - se for a terceira parcela que você deseja cancelar). Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_cancel" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado e parcel indica o número da parcela desejada\n$params = ['id' => $carnet_id, 'parcel' => 1];\n\ntry {\n $api = new Gerencianet($options);\n $response = $api->cancelParcel($params, []);\n print_r($response);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n}\n\nvar params = {\n id: 0,\n parcel: 1\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .cancelParcel(params)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 2363,\n parcel: 1\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.cancel_parcel(params: params)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1,\n 'parcel': 1\n}\n\nresponse = gn.cancel_parcel(params=params)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class CancelParcel\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 0,\n parcel = 1\n };\n\n try\n {\n var response = endpoints.CancelParcel(param);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/CancelParcel.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/CancelParcel.java\n\n*/", "language": "java" }, { "code": "interface\nfunction CancelParcel(CarnetID, CarnetParcel: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction CancelParcel(CarnetID, CarnetParcel: String): String;\nvar\n CancelParams: String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n CancelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\n Result := ExecuteGerenciaNetRequest( 'cancelParcel',CancelParams, '', '' );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tres, err := gn.CancelParcel(1, 1) // no lugar dos 1s coloque o carnet_id e o numero da parcela respectivamente\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> <hr> # 6) Reenviar carnê por e-mail É possível que o carnê seja reenviado para um endereço válido de e-mail. Para reenviar um carnê por e-mail, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/carnet/:id/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê que deseja reenviar. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_resend" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado\n$params = [\n 'id' => $carnet_id\n];\n\n$body = [\n 'email' => 'oldbuck@gerencianet.com.br'\n];\n\ntry {\n $api = new Gerencianet($options);\n $response = $api->resendCarnet($params, $body);\n print_r($response);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n}\n\nvar params = {\n id: 1002\n}\n\nvar body = {\n email: 'oldbuck@gerencianet.com.br'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .resendCarnet(params, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1000\n}\n\nbody = {\n email: 'oldbuck@gerencianet.com.br'\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.resend_carnet(params: params, body: body)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nbody = {\n 'email': 'oldbuck@gerencianet.com.br'\n}\n\nresponse = gn.resend_carnet(params=params, body=body)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class ResendCarnet\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 1001\n };\n\n var body = new\n {\n email = \"oldbuck@gerencianet.com.br\"\n };\n\n try\n {\n var response = endpoints.ResendCarnet(param, body);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/ResendCarnet.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/ResendCarnet.java\n\n*/", "language": "java" }, { "code": "interface\nfunction ResendCarnet(CarnetID: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction ResendCarnet(CarnetID: String): String;\nvar\n Body : String;\n UpdateParcelParams : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\n Body := '{\"email\": \"oldbuck@gerencianet.com.br\"}';\n Result := ExecuteGerenciaNetRequest( 'resendCarnet',UpdateParcelParams, '', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"email\": \"oldbuck@gerencianet.com.br\",\n\t}\n\n\tres, err := gn.ResendCarnet(1, body) // no lugar do 1 coloque o carnet_id certo\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/CarnetResend" "email"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_resend) e explore em nosso Playground. <br> ## b) Atributo que pode ser utilizado para reenviar carnê por e-mail: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>email</code>", "0-1": "Informe um endereço de e-mail válido para o qual o carnê deverá ser enviado.", "0-2": "Sim", "0-3": "String" }, "cols": 4, "rows": 1 } [/block] <br> <hr> # 7) Reenviar parcela específica de carnê por e-mail É possível que uma determinada parcela de um carnê seja reenviado para um endereço válido de e-mail. Para tal, você deve informar o <code>carnet_id</code> desejado. Para reenviar a parcela, esta deve estar com o status <code>waiting</code> *(isto é, "aguardando")*. Para reenviar uma parcela específica de um carnê por e-mail, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/carnet/:id/parcel/:parcel/resend</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê e <code>:parcel</code> é o número da parcela que deseja reenviar por email (por exemplo: <code>3</code> - se for a terceira parcela que você deseja reenviar por e-mail). Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_resend" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado e parcel indica o número da parcela desejada\n$params = ['id' => $carnet_id, 'parcel' => 1];\n\n$body = [\n 'email' => 'oldbuck@gerencianet.com.br'\n];\n\ntry {\n $api = new Gerencianet($options);\n $response = $api->resendParcel($params, $body);\n print_r($response);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n}\n\nvar params = {\n id: 1002,\n parcel: 1\n}\n\nvar body = {\n email: 'oldbuck@gerencianet.com.br'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .resendParcel(params, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1000,\n parcel: 1\n}\n\nbody = {\n email: 'oldbuck@gerencianet.com.br'\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.resend_parcel(params: params, body: body)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1,\n 'parcel': 1\n}\n\nbody = {\n 'email': 'oldbuck@gerencianet.com.br'\n}\n\nresponse = gn.resend_parcel(params=params, body=body)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class ResendParcel\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new\n {\n id = 1001,\n parcel = 2\n };\n\n var body = new\n {\n email = \"oldbuck@gerencianet.com.br\"\n };\n\n try\n {\n var response = endpoints.ResendParcel(param, body);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/ResendParcel.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/ResendParcel.java\n\n*/", "language": "java", "name": "Java" }, { "code": "interface\nfunction ResendParcel(CarnetID, CarnetParcel: String): String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction ResendParcel(CarnetID, CarnetParcel: String): String;\nvar\n Body : String;\n UpdateParcelParams : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID, 'parcel='+CarnetParcel ] ).Text;\n Body := '{\"email\": \"oldbuck@gerencianet.com.br\"}';\n Result := ExecuteGerenciaNetRequest( 'resendParcel',UpdateParcelParams, '', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"email\": \"oldbuck@gerencianet.com.br\",\n\t}\n\n\tres, err := gn.ResendParcel(1, 1, body) // no lugar dos 1s coloque o carnet_id e o numero da parcela respectivamente\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/CarnetParcelResend" "email"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_resend) e explore em nosso Playground. <br> ## b) Atributos que podem ser utilizados para reenviar parcela de carnê por e-mail: [block:parameters] { "data": { "0-1": "Informe um endereço de e-mail válido para o qual o carnê deverá ser enviado.", "0-0": "<code>email</code>", "0-2": "Sim", "0-3": "String", "h-3": "Tipo", "h-2": "Obrigatório", "h-1": "Descrição", "h-0": "Atributo" }, "cols": 4, "rows": 1 } [/block] <br> <hr> # 8) Acrescentar informações ao histórico do carnê O histórico de um carnê é semelhante ao histórico de uma transação. Porém, ele reflete as ações que o carnê em si sofreu. E, da mesma forma, é possível adicionar mensagens personalizadas ao histórico de um carnê, sem que estas, contudo, influenciem no fluxo do mesmo. Para adicionar mensagens personalizadas no histórico de um carnê, você deve enviar uma requisição <code>POST</code> para a rota <code>/v1/carnet/:id/history</code>, onde <code>:id</code> é o <code>carnet_id</code> do carnê desejado. Caso queira, pode explorar e conhecer mais sobre este recurso <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_history" target="_blank">usando nosso Playground</a>. O exemplo abaixo mostra como isto pode ser feito, utilizando as SDK's disponíveis: [block:code] { "codes": [ { "code": "<?php\n \nrequire __DIR__.'/../../vendor/autoload.php'; // caminho relacionado a SDK\n \nuse Gerencianet\\Exception\\GerencianetException;\nuse Gerencianet\\Gerencianet;\n \n$clientId = 'informe_seu_client_id'; // insira seu Client_Id, conforme o ambiente (Des ou Prod)\n$clientSecret = 'informe_seu_client_secret'; // insira seu Client_Secret, conforme o ambiente (Des ou Prod)\n \n$options = [\n 'client_id' => $clientId,\n 'client_secret' => $clientSecret,\n 'sandbox' => true // altere conforme o ambiente (true = desenvolvimento e false = producao)\n];\n\n// $carnet_id refere-se ao ID do carnê desejado\n$params = [\n 'id' => $carnet_id\n];\n\n$body = [\n 'description' => 'This carnet is about a service'\n];\n\ntry {\n $api = new Gerencianet($options);\n $response = $api->createCarnetHistory($params, $body);\n print_r($response);\n} catch (GerencianetException $e) {\n print_r($e->code);\n print_r($e->error);\n print_r($e->errorDescription);\n} catch (Exception $e) {\n print_r($e->getMessage());\n}", "language": "php" }, { "code": "'use strict';\n\nvar Gerencianet = require('gn-api-sdk-node');\nvar credentials = require('./credentials');\n\nvar options = {\n client_id: credentials.client_id,\n client_secret: credentials.client_secret,\n sandbox: true\n}\n\nvar params = {\n id: 1001\n}\n\nvar body = {\n description: 'This carnet is about a service'\n}\n\nvar gerencianet = new Gerencianet(options);\n\ngerencianet\n .createCarnetHistory(params, body)\n .then(console.log)\n .catch(console.log)\n .done();", "language": "javascript", "name": "NodeJS" }, { "code": "require \"gerencianet\"\nrequire_relative \"./credentials\"\n\noptions = {\n client_id: CREDENTIALS::CLIENT_ID,\n client_secret: CREDENTIALS::CLIENT_SECRET,\n sandbox: true\n}\n\nparams = {\n id: 1000\n}\n\nbody = {\n description: \"This carnet is about a service\"\n}\n\ngerencianet = Gerencianet.new(options)\nputs gerencianet.create_carnet_history(params: params, body: body)", "language": "ruby" }, { "code": "# encoding: utf-8\n\nfrom gerencianet import Gerencianet\nfrom credentials import CREDENTIALS\n\ngn = Gerencianet(CREDENTIALS)\n\nparams = {\n 'id': 1\n}\n\nbody = {\n 'description': 'This carnet is about a service'\n}\n\nresponse = gn.create_carnet_history(params=params, body=body)\nprint(response)", "language": "python" }, { "code": "using System;\n\nnamespace Gerencianet.SDK.Examples\n{\n class CreateCarnetHistory\n {\n public static void Execute()\n {\n dynamic endpoints = new Endpoints(Credentials.Default.ClientId, Credentials.Default.ClientSecret, Credentials.Default.Sandbox);\n\n var param = new {\n id = 1001\n };\n\n var body = new\n {\n description = \"This carnet is about a service\"\n };\n\n\n try\n {\n var response = endpoints.CreateCarnetHistory(param, body);\n Console.WriteLine(response);\n }\n catch (GnException e)\n {\n Console.WriteLine(e.ErrorType);\n Console.WriteLine(e.Message);\n }\n }\n }\n}", "language": "asp", "name": ".NET" }, { "code": "/* Para que a SDK Java funcione corretamente, é necessário que a instanciação do módulo seja feita através da criação de um objeto do tipo Gerencianet.\n\nSempre que quisermos chamar uma função da API, basta invocar o método call do objeto Gerencianet, passando como parâmetro o nome do método, os parâmetros da requisição (sempre será um HashMap<String, String>), e o \"body\", que consiste nas propriedades a serem passadas como argumento na chamada de um função da SDK. O \"body\" pode ser declarado de duas formas: um JSONObject ou um Map<String, Object>.\n\nEsta estrutura é necessária para representar o corpo da requisição http que é enviada à um determinado endpoint. Se o \"body\" for um JSONObject, o retorno do método call será um JSONObject, se for um Map<String, Object>, o retorno do método call será um Map<String, Object>\n\nA seguir, disponibilizamos links de nosso Github mostrando duas formas diferentes de retorno: JSONObject\ne Map<String, Object>\n\n\nJSONObject\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/json/CreateCarnetHistory.java\n\n\nMap<String, Object>\n\nhttps://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/carnet/map/CreateCarnetHistory.java\n\n*/", "language": "java" }, { "code": "interface\nfunction CreateCarnetHistory(CarnetID: String):: String;\n\nimplementation\nuses uGerenciaClient, uGerenciaNetClientUtilities;\n{... your code ... }\n\nfunction CreateCarnetHistory(CarnetID: String): String;\nvar\n Body : String;\n UpdateParcelParams : String;\nbegin\n EnableService( 'GerenciaNet.dll' ); \n ConfigureService( ToPAnsiChar( 'client_id' ),ToPAnsiChar( 'client_secret' ),'sandbox','config.json',''); \n GerenciaNetAuthorize();\n\n UpdateParcelParams := CreateRequestParams( [ 'id='+CarnetID ] ).Text;\n Body := '{\"description\": \"This carnet is about a service\"}';\n Result := ExecuteGerenciaNetRequest( 'createCarnetHistory',UpdateParcelParams, '', Body );\nend;", "language": "json", "name": "Delphi" }, { "code": "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/gerencianet/gn-api-sdk-go/gerencianet\"\n\t\"github.com/gerencianet/gn-api-sdk-go/_examples/configs\"\n)\n\nfunc main(){\n\t\n\tcredentials := configs.Credentials\n\tgn := gerencianet.NewGerencianet(credentials)\n\n\tbody := map[string]interface{} {\n\t\t\"description\": \"This charge was not fully paid\",\n\t}\n\n\tres, err := gn.CreateCarnetHistory(1, body) // no lugar do 1 coloque o carnet_id certo\n\n\tif err != nil {\n\t\tfmt.Println(err)\n\t} else {\n\t\tfmt.Println(res)\n\t}\n}", "language": "go" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema que podem ser utilizados: <pre>"id": "/CarnetHistory" "description"</pre> Para verificar mais detalhes, [acesse aqui](https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_history) e explore em nosso Playground. <br> ## b) Atributos que podem ser usados para acrescentar mensagens ao histórico do carnê: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>description</code>", "0-2": "Sim", "0-1": "Permite acrescentar informações ao histórico do carnê sem influenciar no fluxo do mesmo.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255 caracteres.</span></strong>", "0-3": "String" }, "cols": 4, "rows": 1 } [/block] <br> <hr> # 9. Marcar como pago determinada parcela de carnê Para detalhes sobre como marcar como pago determinada parcela de carnê, [veja neste link](https://dev.gerencianet.com.br/docs/marcar-como-pago#section-2-2-marcar-como-pago-determinada-parcela-de-carn-).