{"_id":"57851e6b5ae9c20e00bc262d","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":30,"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"],"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":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":2,"body":"Há ainda outros endpoints associados à \"Carnês\" que estão disponíveis na API e que podem ser explorados pelo integrador.\n\nVá direto ao ponto ­- utilize o índice abaixo e veja diretamente o que você precisa:\n\n1. [Retorna informações sobre um carnê criado](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-1-retorna-informa-es-sobre-um-carn-criado)\n\n2. [Alterando notification_url e/ou custom_id de carnês](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-2-alterando-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 determinado carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-4-cancelar-um-determinado-carn-)\n\n5. [Cancelar parcela específica de um carnê existente](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-5-cancelar-parcela-espec-fica-de-um-carn-existente)\n\n6. [Reenviar carnê por email](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-6-reenviar-carn-por-email)\n\n7. [Reenviar parcela específica de carnê por email](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-7-reenviar-parcela-espec-fica-de-carn-por-email)\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. [Relação entre os endpoints (Playground) com o nome das funções utilizadas pelas SDKs](https://dev.gerencianet.com.br/docs/endpoints#section-rela-o-entre-os-endpoints-playground-com-o-nome-das-fun-es-utilizadas-pelas-sdks)\n[block:callout]\n{\n  \"type\": \"danger\",\n  \"body\": \"Para facilitar a gestão dos seus pagamentos, a partir do dia **14/08/2017**, entrará em vigor os novos status dos carnês na API Gerencianet.\\n\\nCaso esteja iniciando sua integração, ou esteja em andamento, **atente-se ao prazo de 14/08/2017**, data na qual os status *antigos* dos carnês deixarão de funcionar e não serão mais enviados, passando a vigorar os *novos* status.\\n\\nPara maiores detalhes, <a href=\\\"https://dev.gerencianet.com.br/docs/status-dos-carnes\\\" target=\\\"_blank\\\">consulte em nossa documentação específica</a>.\",\n  \"title\": \"ATENÇÃO\"\n}\n[/block]\n# 1) Retorna informações sobre um carnê criado\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>/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\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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}\n[/block]\n<br />\n# 2) Alterando notification_url e/ou custom_id de carnês\n\nPermite incluir/alterar em um carnê informações como <code>notification_url</code> e <code>custom_id</code>.\n\nPara alterar tais metadados, você deve enviar uma requisição <code>PUT</code> para a rota <code>/carnet/:id/metadata</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_metadata\" target=\"_blank\">usando nosso Playground</a>.\n\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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' => 'Carnet 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}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema:\n\n<pre>\"id\": \"/CarnetMetadataUpdate\"\n    \"notification_url\"\n    \"custom_id\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_metadata\" target=\"_blank\">acesse aqui</a>.\n\n<br>\n\n## b) Atributos que podem ser usados:\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 das transações.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Mínimo de 1 caractere e máximo de 255 (String).</span></strong>\",\n    \"1-1\": \"Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la 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 (String).</span></strong>\",\n    \"0-2\": \"Não\",\n    \"1-2\": \"Não\",\n    \"0-3\": \"String\",\n    \"1-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n<br />\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>/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\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema:\n\n<pre>\"id\": \"/CarnetParcelUpdate\"\n    \"expire_at\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel\" target=\"_blank\">acesse aqui</a>.\n\n<br>\n\n## b) Atributos que podem ser usados:\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\n# 4) Cancelar um determinado 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>/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\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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}\n[/block]\n<br />\n\n# 5) Cancelar parcela específica de um carnê existente\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>/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\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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}\n[/block]\n<br />\n\n# 6) Reenviar carnê por email\n\nÉ possível que o carnê seja reenviado para um endereço válido de email.\n\nPara reenviar um carnê por email, você deve enviar uma requisição <code>POST</code> para a rota <code>/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\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema:\n\n<pre>\"id\": \"/CarnetResend\"\n    \"email\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_resend\" target=\"_blank\">acesse aqui</a>.\n\n<br>\n\n## b) Atributos que podem ser usados:\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\": \"Endereço de email válido do cliente que receberá a segunda via do carnê.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres</span></strong>\",\n    \"0-2\": \"Sim\",\n    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n<br />\n\n# 7) Reenviar parcela específica de carnê por email\n\nÉ possível que uma determinada parcela de um carnê seja reenviado para um endereço válido de email. 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 email, você deve enviar uma requisição <code>POST</code> para a rota <code>/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 email).\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\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema:\n\n<pre>\"id\": \"/CarnetParcelResend\"\n    \"email\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_resend\" target=\"_blank\">acesse aqui</a>.\n\n<br>\n\n## b) Atributos que podem ser usados:\n[block:parameters]\n{\n  \"data\": {\n    \"0-1\": \"Endereço de email válido do cliente que receberá a segunda via da parcela do carnê que for especificada.\\n<strong class=\\\"descricao-atributo\\\"><span class=\\\"atributo\\\">Máximo de 255 caracteres</span></strong>\",\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\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>/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\nA seguir um exemplo de utilização:\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$file = file_get_contents(__DIR__.'/../config.json');\\n$options = json_decode($file, true);\\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}\n[/block]\n<br>\n\n## a) Estrutura hierárquica dos atributos do Schema:\n\n<pre>\"id\": \"/CarnetHistory\"\n    \"description\"</pre>\n\nPara verificar mais detalhes, <a href=\"https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_history\" target=\"_blank\">acesse aqui</a>.\n\n<br>\n\n## b) Atributos que podem ser usados\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    \"0-3\": \"String\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]","excerpt":"Você está em: *\"Carnês > Outros endpoints e métodos\"*","slug":"carnes-outros-endpoints","type":"basic","title":"Outros endpoints e métodos"}

Outros endpoints e métodos

Você está em: *"Carnês > Outros endpoints e métodos"*

Há ainda outros endpoints associados à "Carnês" que estão disponíveis na API e que podem ser explorados pelo integrador. Vá direto ao ponto ­- utilize o índice abaixo e veja diretamente o que você precisa: 1. [Retorna informações sobre um carnê criado](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-1-retorna-informa-es-sobre-um-carn-criado) 2. [Alterando notification_url e/ou custom_id de carnês](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-2-alterando-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 determinado carnê](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-4-cancelar-um-determinado-carn-) 5. [Cancelar parcela específica de um carnê existente](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-5-cancelar-parcela-espec-fica-de-um-carn-existente) 6. [Reenviar carnê por email](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-6-reenviar-carn-por-email) 7. [Reenviar parcela específica de carnê por email](https://dev.gerencianet.com.br/docs/carnes-outros-endpoints#section-7-reenviar-parcela-espec-fica-de-carn-por-email) 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. [Relação entre os endpoints (Playground) com o nome das funções utilizadas pelas SDKs](https://dev.gerencianet.com.br/docs/endpoints#section-rela-o-entre-os-endpoints-playground-com-o-nome-das-fun-es-utilizadas-pelas-sdks) [block:callout] { "type": "danger", "body": "Para facilitar a gestão dos seus pagamentos, a partir do dia **14/08/2017**, entrará em vigor os novos status dos carnês na API Gerencianet.\n\nCaso esteja iniciando sua integração, ou esteja em andamento, **atente-se ao prazo de 14/08/2017**, data na qual os status *antigos* dos carnês deixarão de funcionar e não serão mais enviados, passando a vigorar os *novos* status.\n\nPara maiores detalhes, <a href=\"https://dev.gerencianet.com.br/docs/status-dos-carnes\" target=\"_blank\">consulte em nossa documentação específica</a>.", "title": "ATENÇÃO" } [/block] # 1) Retorna informações sobre um carnê criado 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>/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>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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" } ] } [/block] <br /> # 2) Alterando notification_url e/ou custom_id de carnês Permite incluir/alterar em um carnê informações como <code>notification_url</code> e <code>custom_id</code>. Para alterar tais metadados, você deve enviar uma requisição <code>PUT</code> para a rota <code>/carnet/:id/metadata</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_metadata" target="_blank">usando nosso Playground</a>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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' => 'Carnet 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" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema: <pre>"id": "/CarnetMetadataUpdate" "notification_url" "custom_id"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_metadata" target="_blank">acesse aqui</a>. <br> ## b) Atributos que podem ser usados: [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 das transações.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Mínimo de 1 caractere e máximo de 255 (String).</span></strong>", "1-1": "Permite associar uma transação Gerencianet a uma ID específica de seu sistema ou aplicação, permitindo identificá-la 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 (String).</span></strong>", "0-2": "Não", "1-2": "Não", "0-3": "String", "1-3": "String" }, "cols": 4, "rows": 2 } [/block] <br /> # 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>/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>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema: <pre>"id": "/CarnetParcelUpdate" "expire_at"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel" target="_blank">acesse aqui</a>. <br> ## b) Atributos que podem ser usados: [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 /> # 4) Cancelar um determinado 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>/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>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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" } ] } [/block] <br /> # 5) Cancelar parcela específica de um carnê existente 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>/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>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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" } ] } [/block] <br /> # 6) Reenviar carnê por email É possível que o carnê seja reenviado para um endereço válido de email. Para reenviar um carnê por email, você deve enviar uma requisição <code>POST</code> para a rota <code>/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>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema: <pre>"id": "/CarnetResend" "email"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_resend" target="_blank">acesse aqui</a>. <br> ## b) Atributos que podem ser usados: [block:parameters] { "data": { "h-0": "Atributo", "h-1": "Descrição", "h-2": "Obrigatório", "h-3": "Tipo", "0-0": "<code>email</code>", "0-1": "Endereço de email válido do cliente que receberá a segunda via do carnê.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres</span></strong>", "0-2": "Sim", "0-3": "String" }, "cols": 4, "rows": 1 } [/block] <br /> # 7) Reenviar parcela específica de carnê por email É possível que uma determinada parcela de um carnê seja reenviado para um endereço válido de email. 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 email, você deve enviar uma requisição <code>POST</code> para a rota <code>/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 email). 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>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema: <pre>"id": "/CarnetParcelResend" "email"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_parcel_parcel_resend" target="_blank">acesse aqui</a>. <br> ## b) Atributos que podem ser usados: [block:parameters] { "data": { "0-1": "Endereço de email válido do cliente que receberá a segunda via da parcela do carnê que for especificada.\n<strong class=\"descricao-atributo\"><span class=\"atributo\">Máximo de 255 caracteres</span></strong>", "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 /> # 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>/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>. A seguir um exemplo de utilização: [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$file = file_get_contents(__DIR__.'/../config.json');\n$options = json_decode($file, true);\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" } ] } [/block] <br> ## a) Estrutura hierárquica dos atributos do Schema: <pre>"id": "/CarnetHistory" "description"</pre> Para verificar mais detalhes, <a href="https://dev.gerencianet.com.br/docs/playground-carnes#carnet_id_history" target="_blank">acesse aqui</a>. <br> ## b) Atributos que podem ser usados [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.", "0-3": "String" }, "cols": 4, "rows": 1 } [/block]