{
    "info": {
        "name": "ParcelPointPro API v1",
        "description": "Buy, print and track shipping labels across DHL, Evri, Royal Mail and DPD.\n\nSETTING UP\nSet the `api_key` collection variable to a key from the portal, under\nDevelopers \u2192 API keys. Start with a sandbox key (`ppp_test_\u2026`): it\nreturns real label formats and tracking numbers and spends nothing.\n\nIDEMPOTENCY\nRequests that spend money accept an `Idempotency-Key` header. Retrying\nwith the same key returns the original response and buys nothing more.\nThe requests in this collection use a fresh GUID per send.\n\nWEBHOOKS\nEvents available: shipment.purchased, shipment.in_transit, shipment.delivered, shipment.exception, shipment.voided, tracking.updated, wallet.low_balance. Every delivery is signed \u2014 verify the\nsignature before trusting the body.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "token",
                "value": "{{api_key}}",
                "type": "string"
            }
        ]
    },
    "variable": [
        {
            "key": "base_url",
            "value": "https://parcelpointpro.com/api/v1",
            "type": "string"
        },
        {
            "key": "api_key",
            "value": "",
            "type": "string"
        }
    ],
    "item": [
        {
            "name": "Quotes",
            "item": [
                {
                    "name": "Price a parcel",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/quotes",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "quotes"
                            ]
                        },
                        "description": "Returns every service that can carry the parcel, cheapest first. Quoting costs nothing and does not reserve anything \u2014 the price is what you would pay if you bought immediately.\n\nRequires the `quotes:read` scope.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"from\": {\n        \"name\": \"Northgate Supplies\",\n        \"line1\": \"1 Wellington Place\",\n        \"city\": \"Leeds\",\n        \"postcode\": \"LS1 4AP\"\n    },\n    \"to\": {\n        \"name\": \"A Buchanan\",\n        \"line1\": \"18 Kirkgate\",\n        \"city\": \"Otley\",\n        \"postcode\": \"LS21 3HL\"\n    },\n    \"parcel\": {\n        \"weight_g\": 2000,\n        \"length_mm\": 350,\n        \"width_mm\": 250,\n        \"height_mm\": 80\n    }\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "Shipments",
            "item": [
                {
                    "name": "List shipments",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/shipments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "shipments"
                            ]
                        },
                        "description": "Paginated, newest first. Filter with `status`, `reference` or `created_after`.\n\nRequires the `shipments:read` scope."
                    }
                },
                {
                    "name": "Read one shipment",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/shipments/:shipment",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "shipments",
                                ":shipment"
                            ]
                        },
                        "description": "Takes the shipment reference we returned when you bought it (`PPS-\u2026`), not a numeric id.\n\nRequires the `shipments:read` scope."
                    }
                },
                {
                    "name": "Buy a label",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/shipments",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "shipments"
                            ]
                        },
                        "description": "Charges your balance and returns the shipment with its tracking number. This is the call that spends money, so it takes an idempotency key.\n\nRequires the `shipments:write` scope.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"from\": {\n        \"name\": \"Northgate Supplies\",\n        \"line1\": \"1 Wellington Place\",\n        \"city\": \"Leeds\",\n        \"postcode\": \"LS1 4AP\"\n    },\n    \"to\": {\n        \"name\": \"A Buchanan\",\n        \"line1\": \"18 Kirkgate\",\n        \"city\": \"Otley\",\n        \"postcode\": \"LS21 3HL\"\n    },\n    \"parcel\": {\n        \"weight_g\": 2000,\n        \"length_mm\": 350,\n        \"width_mm\": 250,\n        \"height_mm\": 80\n    },\n    \"reference\": \"YOUR-ORDER-1234\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Void a label",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/shipments/:shipment/void",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "shipments",
                                ":shipment",
                                "void"
                            ]
                        },
                        "description": "Asks the carrier to cancel, then reverses the charge. A label that has already been scanned cannot be voided.\n\nRequires the `shipments:void` scope.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reason\": \"Ordered twice\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                },
                {
                    "name": "Download a label",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/shipments/:shipment/label/:format",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "shipments",
                                ":shipment",
                                "label",
                                ":format"
                            ]
                        },
                        "description": "Returns a short-lived signed URL rather than the file itself, so you can hand it straight to a printer or a browser. Formats: `pdf_6x4`, `pdf_a4`, `zpl`.\n\nRequires the `labels:read` scope."
                    }
                }
            ]
        },
        {
            "name": "Tracking",
            "item": [
                {
                    "name": "Track a parcel",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/tracking/:trackingNumber",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "tracking",
                                ":trackingNumber"
                            ]
                        },
                        "description": "The full scan history for a tracking number. The same events are pushed to your webhook endpoint as they happen, so polling this is optional.\n\nRequires the `tracking:read` scope."
                    }
                }
            ]
        },
        {
            "name": "Addresses",
            "item": [
                {
                    "name": "List saved addresses",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/addresses",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "addresses"
                            ]
                        },
                        "description": "Your address book \u2014 senders you ship from and recipients you ship to repeatedly.\n\nRequires the `addresses:read` scope."
                    }
                },
                {
                    "name": "Read one address",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/addresses/:address",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "addresses",
                                ":address"
                            ]
                        },
                        "description": "Only addresses belonging to your own account are reachable.\n\nRequires the `addresses:read` scope."
                    }
                },
                {
                    "name": "Save an address",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Idempotency-Key",
                                "value": "{{$guid}}"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/addresses",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "addresses"
                            ]
                        },
                        "description": "Creating the same address twice is harmless, but an idempotency key keeps your own records clean.\n\nRequires the `addresses:write` scope.",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"name\": \"A Buchanan\",\n    \"line1\": \"18 Kirkgate\",\n    \"city\": \"Otley\",\n    \"postcode\": \"LS21 3HL\",\n    \"kind\": \"recipient\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    }
                }
            ]
        },
        {
            "name": "Account",
            "item": [
                {
                    "name": "Read your balance",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json"
                            }
                        ],
                        "url": {
                            "raw": "{{base_url}}/account/balance",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "account",
                                "balance"
                            ]
                        },
                        "description": "What is available to spend right now. On credit terms this is your remaining credit rather than a wallet balance.\n\nRequires the `account:read` scope."
                    }
                }
            ]
        }
    ]
}