{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"6adfb59f-9593-4aa1-96c7-a467e67389a6","name":"PuntoRed API Technical Specification","description":"**PuntoRed** provides an API which make it possible the interconnection of many types of clients to consume electronic services, entertainment, prepaid services, and process payments.\n\nFor the use of this API it is necessary that the distributor is correctly registered in the Sales Portal, having completed the following steps:\n\n<ul><li><div>Distributor Registration.</div></li><li><div>Registration of device (s) through which you will have connection with the Portal Sales, these can be, web console, point of sale, mobile device etc.</div></li><li><div>Prepaid distributor balance.</div></li><li><div>Registration of services that the distributor may offer.</div></li></ul>\n\n<h1>Security on payload</h1>\n\n**All the requests sent to the API must be protected with a custom implementation of JWT developed by PuntoRed** which defines a compact and autonomous way to securely transmit the information.\n\nEach JWT has an expiration of 24 hrs. It is the responsibility of the implementer to obtain a new token in case the expiration is not valid `HTTP status code: 403`\n\n**PuntoRed** verifies the JWT sent to the API considering:\n\n<ul><li><div>structure</div></li><li><div>expiration time</div></li></ul>\n\n**Warning: One token must be taken per day, with this token all transactions will be encrypted.**\n\nThe submission of the payload used in each API call must be sent encrypted using **AES256**.  \nThe list of parameters must be set up in JSON to be subsequently encrypted using a **\"key previously provided\"** to you.\n\n> // Test key pair  \nSECRET_KEY = \"HPo7OLqB4Fkk4E2yGOtwqw8H5fHR9kNx67OR4g4UdlA=\"  \nIV = \"p5ldmBPdd/9pjC0bDC/nSg==\" \n  \n\n<h1>Encryption Snipplets</h1>\n\nSince client applications need to encrypt the data using the **SECRET_KEY** provided to them before sending to the API, the following are some code examples on different programming languages to help you implementing an **Encryption** routine, with which the JSON payload must be encrypted **before** sending it to the API\n\n<h3>Encryption (AES) - Node.js</h3>\n\n``` javascript\n// All codes in nodejs \nconst crypto = require('crypto');\nencrypt(plainText, iv, secretKey){\n  let buffIv    = Buffer.from(iv, 'base64');\n  let buffKey   = Buffer.from(secretKey, 'base64');\n  let cipher    = crypto.createCipheriv('aes-256-cbc', buffKey, buffIv);\n  let encrypted = cipher.update(JSON.stringify(plainText), 'utf8', 'base64');\n  encrypted += cipher.final('base64');\n  return encrypted\n}\n\n ```\n\n<h3>Encryption (AES) - Java</h3>\n\n``` java\npackage AES;\nimport javax.crypto.Cipher;\nimport javax.crypto.spec.IvParameterSpec;\nimport javax.crypto.spec.SecretKeySpec;\nimport javax.crypto.SecretKey;\nimport java.util.Base64;\npublic class AesEncryption {\n    public static String AESCipher(String mode, String input, String IV, String KEY) {\n        byte[] iv = Base64.getDecoder().decode(IV);\n        byte[] key = Base64.getDecoder().decode(KEY);\n        System.out.println(\"iv: \" + iv + \" || iv length: \" + iv.length);\n        System.out.println(\"key: \" + key + \" || key length: \" + key.length);\n        IvParameterSpec ivspec = new IvParameterSpec(iv);\n        SecretKey secretKey = new SecretKeySpec(key, 0, key.length, \"AES\");\n        if (mode.equals(\"ENCRYPT\")) {\n            return encrypt(input, secretKey, ivspec);\n        } else if (mode.equals(\"DECRYPT\")) {\n            return decrypt(input, secretKey, ivspec);\n        }\n        return null;\n    }\n    // Cipher to encrypt\n    public static String encrypt(String input, SecretKey secretKey, IvParameterSpec ivspec) {\n        try {\n            Cipher cipher = Cipher.getInstance(\"AES/CBC/PKCS5Padding\");\n            cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec);\n            return Base64.getEncoder().encodeToString(cipher.doFinal(input.getBytes(\"UTF-8\")));\n        } catch (Exception e) {\n            System.out.println(\"Error while encrypting: \" + e.toString());\n        }\n        return null;\n    }\n    // Cypher to decrypt\n    public static String decrypt(String input, SecretKey secretKey, IvParameterSpec ivspec) {\n        try {\n            Cipher cipher = Cipher.getInstance(\"AES/CBC/PKCS5PADDING\");\n            cipher.init(Cipher.DECRYPT_MODE, secretKey, ivspec);\n            return new String(cipher.doFinal(Base64.getDecoder().decode(input)));\n        } catch (Exception e) {\n            System.out.println(\"Error while decrypting: \" + e.toString());\n        }\n        return null;\n    }\n    public enum Mode {\n        ENCRYPT, DECRYPT\n    }\n}\n\n ```\n\n<h3>Encryption (AES) - PHP</h3>\n\n``` php\nclass AesCipher\n{\n    const CIPHER = 'AES-256-CBC';\n    const SECRET_KEY = 'SOMETHINGKEY';\n    const SECRET_IV = 'SOMETHINGIV';\n    public static function encrypt($text)\n    {\n        $output = false;\n        $output = openssl_encrypt($text, self::CIPHER, base64_decode(self::SECRET_KEY), OPENSSL_RAW_DATA, base64_decode(self::SECRET_IV));\n        return base64_encode($output);\n    }\n    public static function decrypt($cypherText)\n    {\n        $output = false;\n        $output = openssl_decrypt(base64_decode($cypherText), self::CIPHER, base64_decode(self::SECRET_KEY), OPENSSL_RAW_DATA, base64_decode(self::SECRET_IV));\n        return $output;\n    }\n}\n?>\n\n ```\n\n<h3>Encryption (AES) - Ruby</h3>\n\n``` ruby\nrequire 'base64'\nrequire 'openssl'\nmodule Gestopago\n  module Cipher\n    def self.encrypt(data)\n      aes256 = OpenSSL::Cipher.new 'aes256'\n      aes256.encrypt\n      aes256.iv = Base64.decode64 Gestopago.iv\n      aes256.key = Base64.decode64 Gestopago.key\n      encrypted = aes256.update data\n      encrypted << aes256.final\n      base64 = Base64.encode64 encrypted\n      # https://stackoverflow.com/questions/2620975/strange-n-in-base64-encoded-string-in-ruby\n      base64.gsub(/\\n/, '')\n    end\n    def self.decrypt(encrypted)\n      encrypted = Base64.decode64 encrypted\n      aes256 = OpenSSL::Cipher.new 'aes256'\n      aes256.decrypt\n      aes256.iv = Base64.decode64 Gestopago.iv\n      aes256.key = Base64.decode64 Gestopago.key\n      decrypted = aes256.update encrypted\n      decrypted << aes256.final\n      decrypted\n    end\n  end\nend\n\n ```\n\n<h3>Encryption (AES) - Python</h3>\n\n``` python\nfrom base64 import b64encode, b64decode\nfrom Crypto.Cipher import AES\nGESTOPAGO_SECRET_KEY = \"HPo7OLqB4Fkk4E2yGOtwqw8H5fHR9kNx67OR4g4UdlA=\"  \nGESTOPAGO_IV = \"p5ldmBPdd/9pjC0bDC/nSg==\"          \n# Decodificamos los valores base64 a bytes\nsecret_key_in_bytes = b64decode(GESTOPAGO_SECRET_KEY)\niv_in_bytes = b64decode(GESTOPAGO_IV)\ndef pkcs5_pad(s, BLOCK_SIZE=16):\n    pad_len = BLOCK_SIZE - len(s.encode('utf-8')) % BLOCK_SIZE\n    return (s + chr(pad_len) * pad_len).encode(\"utf-8\")\ndef pkcs5_unpad(s):\n    return s[:-ord(s[-1:])]\ndef encrypt_with_padding(data):\n    cipher = AES.new(secret_key_in_bytes, AES.MODE_CBC, iv_in_bytes)\n    padded_data = pkcs5_pad(data)\n    encrypted = cipher.encrypt(padded_data)\n    return b64encode(encrypted).decode(\"utf-8\")\ndef decrypt_with_padding(data):\n    cipher = AES.new(secret_key_in_bytes, AES.MODE_CBC, iv_in_bytes)\n    decrypted = cipher.decrypt(b64decode(data))\n    unpadded = pkcs5_unpad(decrypted.decode(\"utf-8\"))\n    return unpadded\nif __name__ == \"__main__\":\n    data = '{\"idServicio\":79, \"idProducto\":209 , \"referencia\": \"40425475190118187271\", \"montoPago\": 9999, \"telefono\":\"1111111111\", \"horaLocal\":\"20200401222821\"}'\n    encrypted = encrypt_with_padding(data)\n    print(\"Encrypted:\", encrypted)\n    decrypted = decrypt_with_padding(encrypted)\n    print(\"Decrypted:\", decrypted)\n\n ```\n\n<h3>Encryption (AES) - C</h3>\n\n``` c\nusing System;\nusing System.IO;\nusing System.Security.Cryptography;\nnamespace WhatheverYouNeed\n{\n  public\n  class Aes256 {\n    protected\n    RijndaelManaged myRijndael;\n    public\n    static string EncryptText(string plainText, string Key, string IV) {\n      RijndaelManaged myRijndael;\n      using(myRijndael = new RijndaelManaged()) {\n        myRijndael.Key = Convert.FromBase64String(Key);\n        myRijndael.IV = Convert.FromBase64String(IV);\n        myRijndael.Mode = CipherMode.CBC;\n        myRijndael.Padding = PaddingMode.PKCS7;\n        byte[] encrypted = EncryptStringToBytes(plainText, myRijndael.Key, myRijndael.IV);\n        string encString = Convert.ToBase64String(encrypted);\n        return encString;\n      }\n    }\n    private\n    static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV) {\n      if (plainText == null || plainText.Length \n\n ```\n\n<h3>Encryption Expected Result</h3>\n\nAfter you encrypt the JSON payload with your own encryption tool, you will get some randomized data.\n\n> +LWZ7icI60/DAI8ggv/SpDvJpFYeaYOZ5J7hPGK7g/87r9PRJfgFRBoBLYpBxW33ouvuwQPnhhKHXqzbiqLhMSH4gSH8SMvW6PvHfeklNfTrZnbgWFWDPSy/nqFCP0B/gKavafHG0tW5UP4KPwyhECZK2pLT+I3qYAA85uQaAPQ= \n  \n\n<h1>Key Points</h1>\n\n- This token must be used to authenticate **all subsequent calls to the API**, where it must be added in the `Authorization header` in the form of a `Bearer token`.\n    \n- The `X-API-Key` should be included _if you were provided_ with any.\n    \n\nThis is a `HTTP` Request with the `Authorization header` and the `Bearer Token` in it along with the `X-API-Key` if it applies.\n\n> // Request Headers \n  \n\n**It's not allowed** to get a new token for each request that the implementer makes to the API.\n\n<h3>Expired TOKEN</h3>\n\n**Once the Token EXPIRES** every following API request will response with the `HTTP status code: 403` and the following `JSON Payload`\n\n``` json\n{\n    \"success\": false,\n    \"token\": \"EXPIRED\",\n    \"message\": \"Your token is expired. Is just valid for 24 hours, get a new token with the /authenticate/ method\"\n}\n\n ```\n\n<h3>Connection Timeout</h3>\n\nIs a time period within which a connection between a client and a server must be established. Sometimes this response may never arrive for various reasons (e.g. server is offline / connection issues / high server loads and others). So if there is still no response from the server after **\"62 seconds\"**, The API will 'give up' on waiting and it will be necessary to invoke the **\"confirmTx\"** API call which will tell us the \"Transaction\" status (Applied / Not Applied).\n\n``` XML\n<RESPONSE>\n    <NUM_AUTORIZACION>-1</NUM_AUTORIZACION>\n    <MENSAJE>\n        <CODIGO>82</CODIGO>\n        <TEXTO>Tiempo de espera alcanzado, la transacción no ha sido registrada</TEXTO>\n    </MENSAJE>\n</RESPONSE>\n\n ```\n\n**NOTE**: The confirmTx method has a **lifetime of 24 hours**, once the sendTx method has been executed. It should not be executed after this time.\n\n# **UPC (Unique Payment Code)**\n\n##### **What is the UPC?**\n\nUPC stands for Unique Payment Code. It is a required field used to uniquely identify each transaction submitted via the API. It is generated by the integrator and sent with every transaction request.\n\n##### **Purpose**\n\nThe UPC helps the system detect and reject duplicate transaction attempts, which may occur due to:\n\n- Network errors\n    \n- Response timeouts\n    \n- Automatic retries from the client system\n    \n\n##### **Requirements**\n\n- The UPC must be unique per transaction.\n    \n- Recommended format: alphanumeric (use of UUID or internal transaction ID is suggested).\n    \n- Maximum length: X characters (adjust based on your system).\n    \n- Required for all transactions where duplicate detection is enforced.\n    \n\n###### Duplicate Validation Rules by Service Type\n\n###### 1\\. Airtime Top-up and Entertainment PINs\n\n###### A transaction is considered duplicate if:\n\n- The same UPC is received,\n    \n- Within the last 15 minutes,\n    \n\n###### For th**e same service type.**\n\n###### Example:\n\n| **Date/Time** | **UPC** | **Result** |\n| --- | --- | --- |\n| 2025-08-03 14:00:00 | ABC123 | Accepted |\n| 2025-08-03 14:05:00 | ABC123 | Rejected (duplicate) |\n\n###### 2\\. Bill Payment Services\n\n###### A transaction is considered duplicate if either of the following conditions are met within the last 24 hours:\n\n- The same UPC is received, or\n    \n- The same service and same payment amount combination is found.\n    \n\n###### Example 1: Same service and amount\n\n| **Date/Time** | **Service** | **Amount** | **Result** |\n| --- | --- | --- | --- |\n| 2025025-08-03 13:00:00 | CFE | $500 | Accepted |\n| 2025-08-03 14:30:00 | CFE | $500 | Rejected (duplicate) |\n\n###### Example 2: Same UPC\n\n| **Date/Time** |  | **Service** | **Amount** | **Result** |\n| --- | --- | --- | --- | --- |\n| 2025-08-03 09:00:00 | PQR456 | Telmex | $150 | Accepted |\n| 2025-08-03 10:00:00 | **PQR456** | Telmex | $500 | Rejected (duplicate) |\n\n# Log evidence\n\nIt is mandatory for the implementer to save the requests and responses that are exchanged between **PuntoRed** and the implementer server in some type of log. The log can be a file or database, but it is necessary to have the data that is sent and received for any type of revision or clarification.\n\n<h1>Recommendations for using the API demo</h1>\n\n<ul><li><div>Analyze the Gestopago transaction flow.</div></li><li><div>Use the Authenticate method to get your Bearer token.</div></li><li><div>Enter the credentials to test the API flow.</div></li><li><div>The Encrypt method will only be used here to facilitate the encryption of the signed, it is the responsibility of each implementer to develop the encryption method.</div></li><li><div>In this document <b>PuntoRed</b> <b>Sandbox Top-Up/Services</b> you will find several test scenarios.</div></li></ul>\n\nGood luck!\n\n[<b>noelhy.santiago@puntored.mx</b>](https://mailto:noelhy.santiago@puntored.mx)","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"19876210","team":3181319,"collectionId":"6adfb59f-9593-4aa1-96c7-a467e67389a6","publishedId":"Uz5MFtdn","public":true,"publicUrl":"https://documenter-api.postman.tech/view/19876210/Uz5MFtdn","privateUrl":"https://go.postman.co/documentation/19876210-6adfb59f-9593-4aa1-96c7-a467e67389a6","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF1493"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/3e836fc3-539d-4ef9-90e5-b806ded483b5/Q2FwdHVyYSBkZSBwYW50YWxsYSAyMDI1LTA4LTE4IDE0MDExNS5wbmc=","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF1493"}},{"name":"light","logo":"https://content.pstmn.io/3fc2ccbf-568b-416c-97ad-995466a2ed7d/Q2FwdHVyYSBkZSBwYW50YWxsYSAyMDI1LTA4LTE4IDE0MDYyNS5wbmc=","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF1493"}}]}},"version":"8.10.1","publishDate":"2025-08-18T21:25:15.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/3fc2ccbf-568b-416c-97ad-995466a2ed7d/Q2FwdHVyYSBkZSBwYW50YWxsYSAyMDI1LTA4LTE4IDE0MDYyNS5wbmc=","logoDark":"https://content.pstmn.io/3e836fc3-539d-4ef9-90e5-b806ded483b5/Q2FwdHVyYSBkZSBwYW50YWxsYSAyMDI1LTA4LTE4IDE0MDExNS5wbmc="}},"statusCode":200},"environments":[{"name":"API_PuntoRed","id":"63905987-f354-488d-a77a-a147e2a4c0b7","owner":"19876210","values":[{"key":"test_UPC","value":"","enabled":true,"type":"any"},{"key":"test_UPC_service","value":"","enabled":true,"type":"any"},{"key":"test_UPC_giftCard","value":"","enabled":true,"type":"any"},{"key":"test_amount","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_1","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_2","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_3","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_4","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_5","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_6","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_7","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_test_message_1_8","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_1","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_2","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_3","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_4","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_5","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_6","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_7","value":"","enabled":true,"type":"any"},{"key":"encrypted_json_service_test_message_1_8","value":"","enabled":true,"type":"any"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/f7b39896285d539bb500067e32bd183e4ae1d9d9f39ce4b5c1b0995eccbae684","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"API_PuntoRed","value":"19876210-63905987-f354-488d-a77a-a147e2a4c0b7"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/Uz5MFtdn"}