{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"f0cdcf95-60c9-464f-84f3-4f42dfe0d82f","name":"Parcel2Go API","description":"<img src=\"https://content.pstmn.io/e5d18dee-7c62-4f42-ac52-efb5ba13c9f8/cDJnTG9nby5wbmc=\">\n\nThe shipping API is ideal for implementing delivery solutions for any kind of website. We support flexible authentication using OpenId connect with Oauth2. We support the following :\n\n- Quoting\n    \n- Tracking\n    \n- Payments including : Prepay, Cards, External, On Account.\n    \n- Drop shop geolocation\n    \n- Creating Orders\n    \n- Labels\n    \n- Advanced address rules for international addresses\n    \n\n# Authentication and Authorisation\n\nBefore you can start using the APIs you need to configure an authentication method. The APIs use the [OAuth2](https://tools.ietf.org/html/rfc6749) protocol for authentication which conforms to the [OpenID Connect](http://openid.net/connect/) specification. There are several types of OAuth 2.0 authentication scenarios, the common ones are detailed below. There are also several levels of access which are controlled using the scope parameter, which is specified when requesting access tokens.\n\n_**Note:**_ _If you’re using our_ _**sandbox**_ _environment, you must generate a Client ID and Client Secret from the sandbox portal (_[<i>https://sandbox.parcel2go.com/myaccount/api</i>](https://sandbox.parcel2go.com/myaccount/api)_). Make sure that all access token requests are sent to_ [<i>https://sandbox.parcel2go.com/auth/connect/token</i>](https://sandbox.parcel2go.com/auth/connect/token)_._\n\n## Client Credentials\n\n#### Requesting a Client Id\n\nOne can begin with obtaining client credentials from My Account or from Settings > API. Then your client application will request an access token from the Authorization Server. My account is an area where users can manage personal details, orders and settings such as API Keys. When creating API credentials the field named secret will require a password that you will be required to create. The value of the secret will be used as a parameter when attempting to obtain an access token and it is therefore important that you retain the secret in a confidential place.\n\nYou will be assigned a client id and secret which you can then exchange for an access token using the authorisation endpoint; The access token is then used in the Authorization header when making HTTP calls to the API.\n\n- Clients using this method must be able to maintain a secret (not suitable for client side code).\n    \n- Payments can be configured against clients account\n    \n- Tokens have an expiry time\n    \n\nThis method is ideal when the client will be communicating server to server and the payment scope is not required or all payments will be coming from the hosts account.\n\nNote: Client credentials can be used to make payments, please see the section named Making A Payment for further information.\n\n#### Access Token\n\nThis access token can be used to access protected resources and can grant the client access to many APIs. However, the scope parameter will control the set of resources the token can access and the operations it is allowed to perform. In the scope parameter there should be one or more values when making a request to get an access token. The access token is only valid for the operations and resources that were described in the scope parameter when obtaining the token. The required scopes can be seen below.\n\n- **payment**: This scope is required in order to make payments on behalf of a customer using their PrePay balance.\n    \n- **public-api:** this scope allows access to the API. This is the basic scope required for any API call.\n    \n- **my-profile**: this scope allows access to a user profile and is required when making calls to the endpoints found in the Me section.\n    \n\n#### Example Token Request\n\n```\nPOST /auth/connect/token HTTP/1.1\nHost: example.com\nContent-Type: application/x-www-form-urlencoded\nAccept: application/json\ngrant_type=client_credentials\n  &scope=public-api payment my-profile\n  &client_id=\n  &client_secret=\n\n ```\n\n#### Example Response\n\n```\n{\n    \"access_token\": \"435435435345SDFS...\",\n    \"expires_in\": 7200,\n    \"token_type\": \"Bearer\"\n}\n\n ```\n\nThe access_token here can now be used in HTTP requests to the api by specifying a bearer token header.\n\n```\nPOST /api/quotes HTTP/1.1\nHost: example.com\nContent-Type: application/json\nAuthorization: Bearer \nAccept: application/json\n{\n  \"CollectionAddress\": {\n    \"Country\": \"GBR\"\n  },\n  \"DeliveryAddress\": {\n    \"Country\": \"GBR\"\n  },\n  \"Parcels\": [\n    {\n      \"Value\": 150,\n      \"Weight\": 2,\n      \"Length\": 9,\n      \"Width\": 8,\n      \"Height\": 10\n    }\n  ]\n}\n\n ```\n\n## Implicit Flow\n\nAlternatively, you will redirect the user to our authorisation endpoint where the user will log in and get redirected back to your site. The access token will be included in the redirect url.\n\n- Provides greater level of access\n    \n- Return URLs are part of the authentication so must be registered\n    \n- No secret\n    \n- Users have to log in\n    \n- Users can revoke the access token\n    \n- Tokens have a short lived expiry date\n    \n- Enables us to authorise your application\n    \n\nThis flow is ideal for clients which want to integrate with a customers account and allow the customer to pay for their own orders. Implicit flow can be requested by emailing [<b>apihelp@parcel2go.com</b>](https://mailto:apihelp@parcel2go.com)**.**\n\n#### Example authorize redirect\n\n```\nGET /auth/connect/authorize\n?client_id=example\n&redirect_uri=http://www.example.com/return \n&response_type=token\n&scope=openid+public-api \nHTTP/1.1\nHost: www.example.com\n\n ```\n\n#### Example authorize return url\n\n```\nGET /return\n?access_token=xxxxxxx...\n&token_type=Bearer\n&expires_in=7200\nHTTP/1.1\nHost:www.example.com\n\n ```\n\n# Orders\n\n## Order Flow\n\nThe order journey process consists of 5 mandatory steps accompanied by various optional actions to enhance the experience of the customer.\n\n<img src=\"https://content.pstmn.io/ba40290c-0623-476d-bc47-b778c7e50e53/aW1hZ2UucG5n\" width=\"460\" height=\"720\">\n\n- Authenticate _**(Required)**_ - The first step in the order journey is to get an access token for the API to perform further requests. Information on how to do so can be found in the 'Authentication and Authorisation' section of the documentation.\n    \n- Get Countries (optional) - This step is to retrieve the list of countries that can be delivered to. The endpoint contains high level delivery information for the country. It's important to perform this step, because the information could change at anytime. It's advised to read the 'Country Subdivisions' section for more information.\n    \n- Get Services _(Optional) -_ The endpoint for this step returns a list of active services and their details. A use case for this would be for pre-selecting a service to get a quote for based on its features (Collection/Delivery type).\n    \n- Get Address Rules _(Optional) -_ The majority of services will accept the common details of house name/number, street, town, country and postcode. Some countries and services may have edge cases, so if an order is failing due to the address the full ruleset can be found here.\n    \n- Search Prohibited Items (Optional) - Some countries and/or services have restrictions on what items can be delivered. This step should only need to be used the if the item may have cause for concern or it's unknown by the client what the customer will be sending until the point of order.\n    \n- Get a Quote _**(Required)**_ - Validates the delivery criteria and uses it to retrieve a list of matching services and pricing information. The quote response will let you know if there are required customs fields to create the order depending on the combination of countries and service.\n    \n- Get Drop Shops _(Optional) -_ For a drop off service this step can be used to retrieve a list of shops that a customer can drop their parcel off at.\n    \n- Verify Order _(Optional) -_ This step performs the same validation that 'Create an Order' does and returns detailed pricing information for each order line. A use case for this would be to confirm the final price to the customer if additional extras have been added on after receiving a quote.\n    \n- Create an Order _**(Required) -**_ This will create an unpaid order in the system and return links on how to pay. If errors are frequently encountered, such as address information then it's advised to look at the optional steps to resolve.\n    \n- Pay for an Order _**(Required) -**_ The final step to transact an order is using one of the payment options below. More information can be found under the 'Making a Payment' section.\n    \n    - PrePay - Pay for the order using the logged in user's prepay balance\n        \n    - Payment - Redirect the customer to a payment page using the deep link.\n        \n- Get Labels _**(Conditional)**_ _\\-_ For payment options where the customer ends the order journey on the client's application. The 'Labels' endpoints will return shipping labels in various formats.\n    \n\n## Creating an order\n\nA successful response will include the orderId allow with links to payment options.\n\n- OrderlineIdMap - This is a map of OrderLineIds to the original request item ids which you assigned.\n    \n    - Hash - This reference is for getting labels or doing any action which would normally require user permissions.\n        \n    - OrderLineId - This is the our reference for this shipment and is an important reference used for contacting us about a shipment.\n        \n    - ItemId - The id you assigned to the item.\n        \n\n#### Successful Response\n\nThe Following is a successful response from creating an order.\n\n```\n{\n  \"OrderId\": \"76423942\",\n  \"Links\": {\n    \"PayWithPrePay\": \"https://example.com/api/orders/76423942/paywithprepay?hash=hXJHm9/gsMM8QkLhu7z/QbRc+IdhzpLXx86f1te9p0o=\",\n    \"payment\": \"https://example.com/order/payment?id=76423942&hash=A0346D798A2AEA71D47776324F44ACA5A567425471BD6BF8D558828F48AD76661684249125\",\n    \"help\": \"https://example.com/help-centre\"\n  },\n  \"TotalPrice\": 7.38,\n  \"TotalVat\": 1.23,\n  \"TotalPriceExVat\": 6.15,\n  \"Hash\": \"hXJHm9/gsMM8QkLhu7z/QbRc+IdhzpLXx86f1te9p0o=\",\n  \"OrderlineIdMap\": [\n    {\n      \"Hash\": \"9DXy5SLf6adMMqpZUljifjp92AfLwJuXaK+KYHCw9JA=\",\n      \"OrderLineId\": \"115030194\",\n      \"ItemId\": \"48867b5a-016e-4931-956c-e59b6eb84355\"\n    }\n  ],\n  \"TotalDiscount\": 0\n}\n\n ```\n\n## Adding Extras to your order\n\nThe following is an example of the body request used during a POST when creating an order with extras.\n\n\\*Please note when adding **'Extras'** to the order request, these should be added under the **'Upsells'** property.\n\n```\n{\n  \"Items\": [\n    {\n      \"Id\": \"9c2f14e4-eae2-47db-8e49-df2aba410268\",\n      \"CollectionDate\": \"2021-12-13T14:22:14.2108186+00:00\",\n      \"Service\": \"24h-example\",\n      \"Upsells\" : [\n        {\n            \"Type\": \"Sms\"\n        }\n      ],\n      \"Parcels\": [\n        {\n          \"Id\": \"00000000-0000-0000-0000-000000000000\",\n          \"Height\": 10,\n          \"Length\": 10,\n          \"EstimatedValue\": 100,\n          \"Weight\": 1,\n          \"Width\": 10,\n          \"DeliveryAddress\": {\n            \"ContactName\": \"Test\",\n            \"Email\": \"test@test.com\",\n            \"Property\": \"11\",\n            \"Street\": \"Saville St\",\n            \"Town\": \"Malton\",\n            \"County\": \"North Yorkshire\",\n            \"Postcode\": \"YO17 7LL\",\n            \"CountryIsoCode\": \"GBR\",\n            \"CountryId\": 0\n          },\n          \"ContentsSummary\": \"Slippers\"\n        }\n      ],\n      \"CollectionAddress\": {\n        \"ContactName\": \"John Doe\",\n        \"Organisation\": \"\",\n        \"Email\": \"j.doe@yahoo.com\",\n        \"Phone\": \"07587569852\",\n        \"Property\": \"1\",\n        \"Street\": \"Raleigh Street\",\n        \"Locality\": \"\",\n        \"Town\": \"Scarborough\",\n        \"County\": \"North Yorkshire\",\n        \"Postcode\": \"YO12 7JZ\",\n        \"CountryIsoCode\": \"GBR\",\n        \"CountryId\": 0,\n        \"SpecialInstructions\": \"\"\n      }\n    }\n  ],\n  \"CustomerDetails\": {\n    \"Email\": \"j.doe@yahoo.com\",\n    \"Forename\": \"John\",\n    \"Surname\": \"Doe\"\n  }\n}\n\n ```\n\nThe following is a successful response from creating an order with extras, this will reflect its increase in price depending on the extra's cost.\n\n```\n  ...\n  \"TotalPrice\": 3.47,\n  \"TotalVat\": 0.58,\n  \"TotalPriceExVat\": 2.89,\n  ...\n}\n\n ```\n\nThe same successful response without extras.\n\n```\n{\n  ...\n  \"TotalPrice\": 3.11,\n  \"TotalVat\": 0.52,\n  \"TotalPriceExVat\": 2.59,\n  ...\n}\n\n ```\n\n# Making a Payment\n\nA variety of payment options are available to complete the order transaction. The available payment options can vary, so it's advised to always check the options returned to you from the API in the 'Links' object.\n\n## Prepay\n\nUse this option to pay for an order using the logged in user's pre pay balance. A token must be provided which has the **payment** scope and you must be authorised by the user (via implicit flow). In addition payments can be made on behalf of the customer using their client credentials when a token with the payment scope has been generated. Negative balances are not allowed, so it's advised to monitor your balance and top-up accordingly - you can do so using the PrePay API endpoint. It's also possible to setup prepay so that a single account will be debited for clients which want to use their own account to pay for orders.\n\nA pre generated URL for the 'PayWithPrepay' endpoint will be generated when creating an order, which can be used to complete the transaction. If you'd like to construct the URL yourself then please see the endpoint details for doing so.\n\n## PayPal\n\nThis option allows the order to be paid for with the customer's PayPal account.\n\n## Credit or Debit Card\n\nAllow the customer to pay with their credit or debit card using one of our selected payment gateways.\n\n## Deeplink\n\nThis option is for offloading the customer into the API's booking flow to complete the order.\n\n- The customer will not be returned to the client's application, they'll end their order process on the API's completion page and be offered various options like downloading a label.\n    \n- A selection of the above payment methods will be offered to the customer.\n    \n- The buyer will not be allowed to pay with the customer's prepay balance (the account that was used to create the order via the API).\n    \n\n# Country Subdivisions\n\nFor some parts of the world we've split a country into smaller areas. This is usually down to the destination being an archipelago or island and/or the area requires a different ruleset.\n\nWhen retrieving a list of countries from the API, a subdivision will have the 'Subdivision' field filled with a code. This code is not to be confused with an ISO-3166-2 code, but you'll find some share the same value and / or format.\n\nBelow is a list of the subdivisions available. _Please note this table is a guide only, and it's advised to always check the countries API endpoint before usage._\n\n| **Name** | **Code** |\n| --- | --- |\n| Bonaire | BQ-BO |\n| Canary Islands | ES-CN |\n| Channel Islands | GB-CI |\n| St. Eustatius | BQ-SE |\n| Crete | GR-M |\n| Balearic Islands | ES-IB |\n| Ibiza | ES-IBIZA |\n| Majorca | ES-MAJORCA |\n| Menorca | ES-MENORCA |\n| Northern Ireland | NIR |\n| Scottish Highlands and Islands | HIGH |\n| Azores | PT-20 |\n| Ceuta | ES-CE |\n| Melilla | ES-ML |\n| Tenerife | ES-TF |\n| Gran Canaria | ES-GC |\n| Lanzarote | ES-LZ |\n| Fuerteventura | ES-FU |\n| La Palma | ES-LP |\n| La Gomera | ES-LG |\n| El Hierro | ES-EH |\n| Madeira | PT-30 |\n| Sicily | IT-SI |\n| Sardinia | IT-SA |\n| Isle of Man | IOM |\n| Corsica | FR-COR |\n| Saint Helena | SH-HL |\n| Ascension | SH-AC |\n| Tristan da Cunha | SH-TA |\n\n# Links Object\n\nSome returned objects have a 'Links' object that contains URLs to perform further actions.\n\n## Redirects\n\n- URLs that you can redirect your customers to for more information about the object.\n    \n\n| **Key** | **Description** |\n| --- | --- |\n| complete-page | A page to display that the order has been completed. |\n| tracking-page | A page showing tracking information for the order. |\n| help | A link to our help centre. |\n\n## API Endpoints\n\n- A pre generated URL for an API endpoint.\n    \n- See the documentation for each endpoint for further information.\n    \n\n| **Key** | **Description** |\n| --- | --- |\n| Labels | For the /labels/{reference} API endpoint, which will create an A4 PNG for all labels in the order as a Base64 encoded string. |\n\n## Documents\n\n- A publicly accessible URL for getting a document.\n    \n- Perform a GET request to retrieve the document.\n    \n- No authorisation is required.\n    \n\n| **Key** | **Type** | **Description** |\n| --- | --- | --- |\n| labels-a4 | PDF | An A4 page with a parcel label. Instructions may also be included. |\n| labels-4x6 | PDF | A 4x6 page and parcel label. |\n| labels-a4-4x6 | PDF | An A4 page with a 4x6 parcel label |\n| label-a4-21 | PDF | A set of A4 pages with up to 21 addresses per sheet. This is only available for orders created via SmartSend. |\n| picking-list | PDF | A list for picking and packing |\n| invoice | PDF | An invoice for the order. |\n| barcode-printinstore | PNG | A barcode for printing the parcel's label in-store. |\n| wallet-ios-printinstore | PNG | A barcode for printing the parcel's label in-store. |\n\n## Payment\n\n- A URL for invoking a payment option\n    \n- Each option has a different implementation, please see the \"Payment\" section for further information.\n    \n\n| **Key** | **Description** |\n| --- | --- |\n| PayWithPrePay | Pay for the order with the logged in user's pre pay balance. |\n| paypal | Lets the customer for the order using their paypal account |\n| payment | Deeplink the customer into our booking flow and let them pay with one of our available options |\n| card | Lets the customer pay for the order using their card. |\n| PayByCard | A secondary option for letting the customer pay for the order using their card. |\n\n# Customs\n\nInternational shipments require additional customs details the details required are specified by the quote. They include :\n\n- ExportReason - The reason for exporting the item, acceptable values are:\n    \n    - Sale\n        \n    - Gift\n        \n    - Sample\n        \n    - Repair\n        \n    - Documents\n        \n    - IntraCompanyTransfer\n        \n    - TemporaryExport\n        \n- VatStatus - This is the VAT status of the sender, one of :\n    \n    - Individual\n        \n    - NotRegistered\n        \n    - Registered\n        \n- VatNumber - The sender's VAT number if VAT status is 'Registered'.\n    \n- RecipientVatStatus - This is the VAT status of the recipient, one of :\n    \n    - Individual\n        \n    - NotRegistered\n        \n    - Registered\n        \n- RecipientVatNumber - The recipient's VAT number if their VAT status is 'Registered'.\n    \n- TaxId - Tax identification number of the sender. Useages of this field include:\n    \n    - The sender's UKIMS number for a shipment to Northern Ireland.\n        \n- RecipientTaxId - Tax identification for the recipient. Useages of this field include:\n    \n    - The recipient's UKIMS number for a shipment to Northern Ireland.\n        \n    - The recipient's TIN code for a shipment to Israel.\n        \n    - The recipients South African ID for a shipment to South Africa.\n        \n    - The recipient's PCCC for a shipment to South Korea.\n        \n    - The recipient's PAN card/Aadhaar number for a shipment to India.\n        \n    - The recipient's DNI code.\n        \n    - The recipient's Qatari ID Number for a shipment to Qatar.\n        \n- EoriNumber - [Economic Operator Registration and Identification Number](https://www.gov.uk/eori) - For registered companies.\n    \n- RecipientEoriNumber - The EORI number for the recipient.\n    \n- OriginCountry - This is the ISO 3166-1 alpha 3 code for the country the item was manufactured in.\n    \n- TariffCode - The trade tariff code can be specified where applicable. (See [https://www.gov.uk/trade-tariff](https://www.gov.uk/trade-tariff))\n    \n- IOSS - For the Import One Stop Shop ([https://www.gov.uk/guidance/register-for-the-vat-import-one-stop-shop-scheme](https://www.gov.uk/guidance/register-for-the-vat-import-one-stop-shop-scheme))\n    \n\n#### Example of an order specifying customs data\n\nThis is an international order quote request and response to determine the required fields and a create order request which properly specifies customs information required by the quote\n\n##### Quote Request Body\n\nThe field of **VatStatus** on the customer address model can be set on the sender and delivery address models. This can be either (**Individual | Registered | NotRegistered**) if not supplied Individual will be assumed.\n\n``` json\n{\n  \"Service\": \"hermes-uk-economy\",\n  \"CollectionAddress\": {\n    \"Country\": \"GBR\",\n    \"Subdivision\": null,\n    \"Property\": \"1A\",\n    \"Postcode\": \"BL6 4SD\",\n    \"Town\": \"Bolton\",\n    \"VatStatus\": \"Registered\"\n  },\n  \"DeliveryAddress\": {\n    \"Country\": \"GBR\",\n    \"Subdivision\": \"NIR\",\n    \"Property\": \"Belfast City Hall\",\n    \"Postcode\": \"BT1 5GS\",\n    \"Town\": \"Belfast\",\n    \"VatStatus\": \"Registered\"\n  },\n  \"Parcels\": [\n    {\n      \"Height\": 10.00,\n      \"Length\": 12.00,\n      \"Weight\": 0.25,\n      \"Width\": 15.00,\n      \"Value\": 5.0\n    }\n  ]  \n}\n\n ```\n\n##### Quote Repsonse (Cut down to show key properties)\n\nFrom the quote response below we can see to create an order from this destination country to this delivery country using the service we'll need to include some customs information indicated by the  \n**RequiresCustoms bool**\n\nIf **TariffCodeRequired** is true, you will be required to provide Commodity Codes when creating an order. The Type of Tariff system is specified by the **TariffSystem**\n\n**SenderTaxIdRequirements** and **RecipientTaxIdRequirements** will let you know whether specific Tax Ids are required for the recipeint or the sender, these could be business codes or personal ones.\n\n**SenderEoriRequirements** and **RecipientEoriRequirements** will let you know whether EORI is required for the sender and recipient.\n\n**ExportReasonRequired** will be true if you are required to provide the reason for export.\n\n**CountryOfManufactureRequired** will be true if you are required to provide the country of manufacture.\n\n``` json\n{\n    \"Quotes\": [\n        {\n            \"Discount\": 0.0,\n            \"Extras\": [],\n            \"Service\": {                \n                \"CourierName\": \"Evri Collection\",                \n                \"Slug\": \"hermes-uk-economy\",\n                \"Name\": \"Evri Collection\",\n                \"CollectionType\": \"Collection\",\n                \"DeliveryType\": \"Door\",                \n                \"Classification\": \"Slow\"\n            },\n            \"TotalPrice\": 6.54,\n            \"TariffSystem\": \"HS\",\n            \"TariffCodeRequired\": true,\n            \"CountryOfManufactureRequired\": false,\n            \"ExportReasonRequired\": true,\n            \"RequiresCustoms\": true,\n            \"RecipientTaxIdRequirements\": {\n                \"Label\": \"Recipient UKIMS\",\n                \"Helper\": \"Enter the recipient's UKIMS\",\n                \"ExampleText\": \"XIUKIM12345678900020240619102423\",\n                \"RequiredValidationMessage\": \"Please enter a valid UKIMS number\",\n                \"IsRequired\": true,\n                \"Validation\": \"^(XIUKIM\\\\d{12})([0-9]{4})(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$\"\n            },\n            \"SenderTaxIdRequirements\": {\n                \"Label\": \"Sender UKIMS\",\n                \"Helper\": \"Enter your UKIMS\",\n                \"ExampleText\": \"XIUKIM12345678900020240619102423\",\n                \"RequiredValidationMessage\": \"Please enter a valid UKIMS number\",\n                \"IsRequired\": true,\n                \"Validation\": \"^(XIUKIM\\\\d{12})([0-9]{4})(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$\"\n            },\n            \"SenderEoriRequirements\": {\n                \"IsRequired\": true,\n                \"Validation\": null\n            },\n            \"IossRequirements\": null,\n            \"RecipientEoriRequirements\": null\n        }\n    ]\n}\n\n ```\n\nBased on the response from the quote the following order creation request body can be constructed.\n\n``` json\n{\n  \"CustomerDetails\": {\n    \"Email\": \"test@test.com\",\n    \"Forename\": \"Tester\",\n    \"Surname\": \"Testerson\"\n  },\n  \"Items\": [\n    {\n      \"CollectionAddress\": {\n        \"CountryIsoCode\": \"GBR\",\n        \"ContactName\": \"Parcel Sender\",\n        \"Subdivision\": null,\n        \"Property\": \"1A\",\n        \"Street\": \"Parklands\",\n        \"Postcode\": \"BL6 4SD\",\n        \"Town\": \"Bolton\",        \n        \"Email\": \"test@test.com\",\n        \"Phone\": \"+447123123123\"          \n      },\n      \"Id\": \"123\",\n      \"OriginCountry\": \"GBR\",\n      \"CollectionDate\": \"2024-09-12\",\n      \"ExportReason\": \"Sale\",\n      \"VatNumber\": \"123456\",\n      \"RecipientVatNumber\": \"5678912\",\n      \"RecipientTaxId\": \"XIUKIM12345678900020240619102111\",\n      \"TaxId\": \"XIUKIM12345678900020240619102777\",\n      \"EoriNumber\": null,\n      \"RecipientEoriNumber\": null,\n      \"VatStatus\": \"Registered\",\n      \"RecipientVatStatus\": \"Registered\",      \n      \"Parcels\": [\n        {\n          \"ContentsSummary\": \"T-Shirt\",\n          \"DeliveryAddress\": {            \n            \"CountryIsoCode\": \"GBR\",\n            \"Subdivision\": \"NIR\",\n            \"Property\": \"Belfast City Hall\",\n            \"Street\" : \"Donegall Square N\",\n            \"Postcode\": \"BT1 5GS\",\n            \"Town\": \"Belfast\",\n            \"County\" : \"Antrim\",\n            \"ContactName\": \"My Recipient\",\n            \"Email\": \"iam@therecipient.com\",\n            \"Phone\": \"+447123123123\"            \n          },\n          \"Height\": 10.00,\n          \"Length\": 12.00,\n          \"Weight\": 0.25,\n          \"Width\": 15.00,\n          \"EstimatedValue\": 5.0,\n          \"Contents\": [\n            {\n              \"Description\": \"A cotton T-Shirt\",\n              \"Quantity\": \"1\",\n              \"EstimatedValue\": 5.0,\n              \"TariffCode\": \"610910\",\n              \"OriginCountry\": \"GBR\"\n            }\n          ]\n        }\n      ],\n      \"Service\": \"hermes-uk-economy\",\n      \"Reference\": \"my order ref\"\n    }    \n  ]\n}\n\n ```\n\n#### Example of a failed international order\n\nThis is an example of a response when customs is required but not specified.\n\n``` json\n{\n  \"Errors\": [\n    {\n      \"Type\": \"Customs\",\n      \"Error\": \"Please supply the reason for exporting your parcel.\",\n      \"ItemId\": \"c1361416-53ca-4d67-974a-60f5335cdaf1\"\n    },\n    {\n      \"Type\": \"Customs\",\n      \"Error\": \"Please supply your VAT status.\",\n      \"ItemId\": \"c1361416-53ca-4d67-974a-60f5335cdaf1\"\n    },\n    {\n      \"Type\": \"Customs\",\n      \"Error\": \"Please supply details of your parcel's country of manufacture.\",\n      \"ItemId\": \"c1361416-53ca-4d67-974a-60f5335cdaf1\"\n    },\n    {\n      \"Type\": \"Customs\",\n      \"Error\": \"Please supply details of your international parcel's contents.\",\n      \"ItemId\": \"c1361416-53ca-4d67-974a-60f5335cdaf1\"\n    },\n    {\n      \"Type\": \"Service\",\n      \"Error\": \"A price could not be found for these specifications.\",\n      \"ItemId\": \"c1361416-53ca-4d67-974a-60f5335cdaf1\"\n    }\n  ]\n}\n\n ```\n\n# Extras\n\n## What are Extras ?\n\n**'Extras'** are additional products which can be selected with your order. These include parcel protection, delivery text messages, delivery signatures as well as other options listed below. These might have an additional cost, be included with your service, or be offered as a free optional product.:\n\n## Which Extras can I have?\n\nThe extras you can choose are returned on your quote response under **'AvailableExtras'**, as show on the example below. These are based on the courier and type of service you have chosen, for example Print in Store is only available on drop off services. Here are a few examples of other extras which are available:\n\n- Sms\n    \n- Signature\n    \n- Cover\n    \n- DeliveryGuarantee\n    \n- ExtendedBaseCover\n    \n- PrintInStore\n    \n\n### How do I get a quote with extras, like text messages?\n\nWhen requesting a quote, you can choose to include the extras you need on the **'Extras'** property.\n\n``` json\n{\n      \"CollectionAddress\": {\n        \"Country\": \"GBR\"\n      },\n      \"DeliveryAddress\": {\n        \"Country\": \"GBR\"\n      },\n      \"Parcels\": [\n        {\n          \"Value\": 150,\n          \"Weight\": 1.5,\n          \"Length\": 9,\n          \"Width\": 8,\n          \"Height\": 10\n        }\n      ],\n      \"Extras\": [\n        {\n          \"Type\": \"Sms\"\n        }\n      ]\n }\n\n ```\n\n### How do I get parcel protection?\n\nAs above, you can request protection as an 'Extra'.\n\n- Including **'ExtendedBaseCover'** will get a quote with the standard £20 (depending on service) included protection.\n    \n- Including **'Cover'** will include protection to the value of your item, or maximum protection limit offered by the service - which ever is the lowest.\n    \n- Including both extras will include the £20 protection and an additional cost for any protection above this value.\n    \n\n``` json\n{\n      \"CollectionAddress\": {\n        \"Country\": \"GBR\"\n      },\n      \"DeliveryAddress\": {\n        \"Country\": \"GBR\"\n      },\n      \"Parcels\": [\n        {\n          \"Value\": 150,\n          \"Weight\": 1.5,\n          \"Length\": 9,\n          \"Width\": 8,\n          \"Height\": 10\n        }\n      ],\n      \"Extras\": [\n        {\n          \"Type\": \"ExtendedBaseCover\"\n        },\n        {\n          \"Type\": \"Cover\"\n        }\n      ]\n}\n\n ```\n\n### What are 'Extras' and 'AvailableExtras' on a Quote Response?\n\nAny extras which are available on the service, but not included on your initial quote request, will be returned on the **'AvailableExtras'** property of the quote response. Any extras you include (like **Sms** in the example above) will be added to the quote total price, and detailed on the **'Extras'** property of the quote response. The example below shows **Sms** as £0.30.\n\n#### Example of a Quote with Extras\n\n```\n{\n  \"AvailableExtras\": [\n    {\n      \"Type\": \"Cover\",\n      \"Price\": 7.5,      \n      \"Vat\": 1.5,      \n      \"Total\": 9,      \n      \"Details\": null            \n    },\n    {\n      \"Type\": \"DeliveryGuarantee\",      \n      \"Price\": 1.1,      \n      \"Vat\": 0.22,      \n      \"Total\": 1.32,      \n      \"Details\": null      \n    },\n    {\n      \"Type\": \"ExtendedBaseCover\",\n      \"Price\": 0.2,      \n      \"Vat\": 0.04,      \n      \"Total\": 0.24,      \n      \"Details\": {      \n        \"IncludedCover\": \"20.00\",     \n        \"MaxWeight\": \"5.00\"     \n      }      \n    }\n  ],\n  \"Discount\": 0,\n  \"Extras\": [\n    {\n      \"Amount\": 0.3,\n      \"Type\": \"Sms\"\n    }\n  ],\n  ...\n}\n\n ```\n\n# Webhooks\n\nWe support multiple different types of webhooks / notifications based on events which can\n\noccur on your account. We will post a specific payload for each available event to an endpoint you specify. If a 200 response is not received, we will keep retrying using a backoff algorithm until we get a 200 response or hit our limit.\n\n## Enabling Webhooks\n\nFrom the My Account page, go through the settings menu to the API credentials page. Click to Edit the API credentials you want webhooks enabled for and scroll down to the Webhooks section at the bottom. Fill in your URL details, and give us a secret which can be used to verify a notification we send you (see Verifying Webhooks for details).\n\n## Webhook format\n\nAll the webhook events are wrapped in the following json class :\n\n```\n{\n     \"Id\":\"e0363b4a-aead-4dd5-bcc5-73793ad49974\",\n     \"Timestamp\": \"2018-08-30T11:37:03.6386334+00:00\",\n     \"Signature\": \"ac6cff923966b1dfcb4560e32d9a6683ea9b1c1f41aa3ad9c8e36658f7389703\",\n     \"Type\": \"Example\",\n     \"Payload\": {\n       ...\n     }\n }\n\n ```\n\n| **Field** | **Type** | **Description** |\n| --- | --- | --- |\n| Id | string (guid) | An autogenerated identifier for this webhook |\n| Timestamp | datetime | A timestamp for when this webhook was sent |\n| Signature | string | The HEX signature generated for this webhook (see how to verify) |\n| Type | string | The type of webhook |\n| Payload | object | The payload for the webhook, this varies depending on the type of webhook |\n\n## Supported Webhook Payloads\n\n## Cases\n\nWe will raise case events with the following format\n\n```\n{\n  ...\n  \"Type\":\"Case\",\n  \"Payload\": {\n    \"OrderLineId\":\"1234\",\n    \"CustomerReference\" : \"ab1234\",\n    \"CaseId\" : \"12345\",\n    \"Reference\" : \"ABER343434\",\n    \"Status\" : \"Approved\",\n    \"CaseType\" : \"Claim\"\n  }\n}\n\n ```\n\n| **Field** | **Type** | **Description** |\n| --- | --- | --- |\n| OrderLineId | Int | This is our number |\n| CustomerReference | string | This is an optional field you can specify in our API orders endpoint |\n| CaseId | int | The unique identifier for this case |\n| Reference | string | This is an optional field you can specify in our API orders endpoint |\n| Status | string | The status the claim has entered |\n| CaseType | string | The type of case, can be Enquiry or Claim |\n\n## Verifying Webhooks\n\nAll our events are signed with a SHA256 signature of the header fields Id, Timestamp and Type.\n\nThe following is sudo code showing how to verify the hash :\n\n``` csharp\n  var toHash = Id + \":\" + Timestamp.ToString(\"yyyy-MM-dd HH:mm:ss\") + \":\" + Type;\n  var hexhash = GetHash(toHash, secret);\n\n ```\n\nThe following is a implementation in c#\n\n``` csharp\n public static void Main()\n    {\n    /\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* This is an example of a webhook  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/\n        var payload = new {\n            Id = \"33bb3c63-c2ec-4b69-8db3-301fa8cfe024\",\n            Timestamp = new DateTime(2018,01,01),\n            Type=\"Case\"\n        };\n        string toHash = payload.Id + \":\" + payload.Timestamp.ToString(\"yyyy-MM-dd HH:mm:ss\") + \":\" + payload.Type;\n        string secret = \"abcd\"; /\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\* your webhook secret \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/\n        string hexhash = GetHash(toHash, secret);\n        Console.WriteLine(hexhash);\n    }\n    private static string GetHash(string text, string key)\n    {\n        var textBytes = Encoding.UTF8.GetBytes(text);\n        var keyBytes = Encoding.UTF8.GetBytes(key);\n        byte[] hashBytes;\n        using (HMACSHA256 hash = new HMACSHA256(keyBytes))\n        {\n            hashBytes = hash.ComputeHash(textBytes);\n        }\n        return BitConverter.ToString(hashBytes).Replace(\"-\", \"\").ToLower();\n    }\n\n ```\n\n## Securing your endpoint\n\nWe recommend that you verify your webhooks when received. We also recommend that you don't allow replaying of webhooks with the same id (replay attacks) and that you discard any webhooks received outside of a sensible time range based on the timestamp.\n\n# Endpoints\n\n## Sandbox URLS\n\n| Type | Url |\n| --- | --- |\n| API Docs | [https://sandbox.parcel2go.com/api/docs](https://sandbox.parcel2go.com/api/docs) |\n| Swagger | [https://sandbox.parcel2go.com/api/swagger](https://sandbox.parcel2go.com/api/swagger) |\n| Auth Base | [https://sandbox.parcel2go.com/auth](https://sandbox.parcel2go.com/auth) |\n| Auth Token Endpoint | [https://sandbox.parcel2go.com/auth/connect/token](https://sandbox.parcel2go.com/auth/connect/token) |\n| Auth OpenId Config (well-known config) | [https://sandbox.parcel2go.com/auth/.well-known/openid-configuration](https://sandbox.parcel2go.com/auth/.well-known/openid-configuration) |\n\n## Live URLS\n\n| Type | Url |\n| --- | --- |\n| API Docs | [https://www.parcel2go.com/api/docs](https://www.parcel2go.com/api/docs) |\n| Swagger | [https://www.parcel2go.com/api/swagger](https://www.parcel2go.com/api/swagger) |\n| Auth Base | [https://www.parcel2go.com/auth](https://www.parcel2go.com/auth) |\n| Auth Token Endpoint | [https://www.parcel2go.com/auth/connect/token](https://www.parcel2go.com/auth/connect/token) |\n| Auth OpenId Config (well-known config) | [https://www.parcel2go.com/auth/.well-known/openid-configuration](https://www.parcel2go.com/auth/.well-known/openid-configuration) |\n\n# Functional Differences between Live and Sandbox Environments\n\nPlease note that the Live and Sandbox environments of our API may exhibit functional differences in certain areas. While we strive to maintain parity between these environments, there are specific scenarios where the Sandbox environment may not fully replicate the functionality or behaviour of the Live environment.\n\nIt is important to understand that the Sandbox environment is primarily designed for development, testing, and experimentation purposes. While it provides a safe and isolated space to validate your integration with our API, it may not accurately reflect the production-ready behaviour you can expect in the Live environment.\n\nTo ensure a seamless transition from Sandbox to Live, we recommend thoroughly testing your implementation in both environments and identifying any discrepancies. It is crucial to consider the following points:\n\n- Features and Limitations: Some features available in the Live environment may not be fully supported or available in the Sandbox environment. Conversely, the Sandbox environment might provide additional features or capabilities that are not present in the Live environment.\n    \n- Data Integrity: While the Sandbox environment utilises sample or simulated data, the Live environment operates with actual production data. Consequently, data integrity, accuracy, and consistency may differ between the two environments\n    \n- External Integrations: If your API implementation relies on external services or integrations, keep in mind that the behaviour of these integrations may not be identical across the Sandbox and Live environments. Verify and test these integrations thoroughly to ensure their compatibility in both environments\n    \n\n# Terms and Conditions\n\nThe Terms and Conditions can be found at the following URL: [https://www.parcel2go.com/api/docs/articles/terms.html](https://www.parcel2go.com/api/docs/articles/terms.html)","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"26739282","team":5273144,"collectionId":"f0cdcf95-60c9-464f-84f3-4f42dfe0d82f","publishedId":"2sAXqmB5s6","public":true,"publicUrl":"https://api-docs.parcel2go.com","privateUrl":"https://go.postman.co/documentation/26739282-f0cdcf95-60c9-464f-84f3-4f42dfe0d82f","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"005CB9"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/649ef36e-55cb-4f9f-ab8e-a6b6672e20d8/Y0dGeVkyVnNNbWR2TFd4dloyOHVjRzVuLnBuZw==","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"005CB9"}},{"name":"light","logo":"https://content.pstmn.io/649ef36e-55cb-4f9f-ab8e-a6b6672e20d8/Y0dGeVkyVnNNbWR2TFd4dloyOHVjRzVuLnBuZw==","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"005CB9"}}]}},"version":"8.10.1","publishDate":"2024-09-15T12:07:21.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/649ef36e-55cb-4f9f-ab8e-a6b6672e20d8/Y0dGeVkyVnNNbWR2TFd4dloyOHVjRzVuLnBuZw==","logoDark":"https://content.pstmn.io/649ef36e-55cb-4f9f-ab8e-a6b6672e20d8/Y0dGeVkyVnNNbWR2TFd4dloyOHVjRzVuLnBuZw=="}},"statusCode":200},"environments":[{"name":"Sandbox","id":"45906085-d5b6-48f9-9d7d-0f40fe7654b9","owner":"26739282","values":[{"key":"baseUrl","value":"https://sandbox.parcel2go.com/api","enabled":true},{"key":"authcallback","value":"https://sandbox.parcel2go.com/api/swagger/ui/o2c-html","enabled":true,"type":"default"},{"key":"authBase","value":"https://sandbox.parcel2go.com/auth","enabled":true,"type":"default"},{"key":"clientId","value":"swaggerapi","enabled":true,"type":"default"}],"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/189c568f43116f4ced6d7a56722e8c7b4cdf1d557ed18aa606968e006b342791","favicon":"https://parcel2go.com/favicon.ico"},"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":"Sandbox","value":"26739282-45906085-d5b6-48f9-9d7d-0f40fe7654b9"}],"canonicalUrl":"https://api-docs.parcel2go.com/view/metadata/2sAXqmB5s6"}