{
  "info": {
    "_postman_id": "f22a7f95-6787-4cb5-9d88-1b0cf30a16f8",
    "name": "Everest Partner API v1",
    "description": "Sandbox-first collection for quoting, creating, simulating, tracking, webhook testing, and billing reconciliation.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://staging-api.everestmobility.co/api/partners/v1"
    },
    {
      "key": "partnerApiKey",
      "value": "evp_replace_me"
    },
    {
      "key": "quoteId",
      "value": ""
    },
    {
      "key": "deliveryId",
      "value": ""
    },
    {
      "key": "trackingUrl",
      "value": ""
    },
    {
      "key": "webhookEndpointId",
      "value": ""
    },
    {
      "key": "webhookDeliveryId",
      "value": ""
    },
    {
      "key": "topupReference",
      "value": ""
    },
    {
      "key": "portalActivationToken",
      "value": "evp_activation_replace_me"
    },
    {
      "key": "partnerEmailOrPhone",
      "value": "owner@sandbox-commerce.example"
    },
    {
      "key": "partnerPassword",
      "value": "change-me-strong-password"
    },
    {
      "key": "partnerAccessToken",
      "value": ""
    },
    {
      "key": "applicationId",
      "value": ""
    },
    {
      "key": "staffAccessToken",
      "value": ""
    },
    {
      "key": "liveRequestId",
      "value": ""
    },
    {
      "key": "invoiceId",
      "value": ""
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-Everest-Partner-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{partnerApiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "1. Submit Partner Application",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('applicationId', body.application_id);",
              "pm.test('application submitted', () => pm.expect(body.application_id).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/applications/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"business_name\": \"Sandbox Commerce\",\n  \"business_type\": \"ECOMMERCE\",\n  \"contact_name\": \"Sandbox Owner\",\n  \"contact_email\": \"owner@sandbox-commerce.example\",\n  \"contact_phone\": \"2348000009101\",\n  \"website\": \"https://sandbox-commerce.example\",\n  \"requested_services\": [\n    \"DELIVERY_BIKE\"\n  ],\n  \"requested_cities\": [\n    \"Lagos\"\n  ],\n  \"expected_monthly_deliveries\": 500,\n  \"legal_name\": \"Sandbox Commerce Limited\",\n  \"trading_name\": \"Sandbox Commerce\",\n  \"registration_type\": \"REGISTERED_COMPANY\",\n  \"registration_number\": \"RC1234567\",\n  \"tax_identification_number\": \"TIN1234567890\",\n  \"registered_address\": \"12 Admiralty Way, Lekki, Lagos\",\n  \"operating_address\": \"15 Fulfillment Road, Lekki, Lagos\",\n  \"business_description\": \"Ecommerce checkout integration for last-mile delivery.\",\n  \"owner_name\": \"Sandbox Owner\",\n  \"owner_role\": \"Founder\",\n  \"owner_email\": \"owner@sandbox-commerce.example\",\n  \"owner_phone\": \"2348000009101\",\n  \"identity_type\": \"NIN\",\n  \"identity_last4\": \"1234\",\n  \"identity_verification_consent\": true,\n  \"compliance_contact_email\": \"compliance@sandbox-commerce.example\",\n  \"verification_documents\": {\n    \"cac_certificate\": {\n      \"status\": \"available\"\n    },\n    \"tax_certificate\": {\n      \"status\": \"available\"\n    },\n    \"address_proof\": {\n      \"status\": \"available\"\n    },\n    \"owner_identity\": {\n      \"status\": \"reference_available\"\n    }\n  },\n  \"metadata\": {\n    \"integration_type\": \"checkout_api\",\n    \"use_case\": \"Quote delivery at checkout and create delivery after payment.\"\n  }\n}"
        }
      }
    },
    {
      "name": "1a. Check Partner Application Status",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.test('application status returned', () => pm.expect(body.status).to.be.ok);",
              "pm.test('no activation token leaked', () => pm.expect(body.portal_activation_token).to.be.undefined);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "GET",
        "header": [],
        "url": "{{baseUrl}}/applications/{{applicationId}}/status/?contact_email={{partnerEmailOrPhone}}"
      }
    },
    {
      "name": "1a-2. Staff List Partner Applications",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.test('staff application list returned', () => pm.expect(body.results).to.be.an('array'));"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{staffAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "header": [],
        "url": "{{baseUrl}}/admin/applications/?status=PENDING"
      }
    },
    {
      "name": "1a-3. Staff Approve Partner Application",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('portalActivationToken', body.portal_activation_token);",
              "if (body.api_key) pm.collectionVariables.set('partnerApiKey', body.api_key);",
              "pm.test('application approved', () => pm.expect(body.application.status).to.eql('APPROVED'));"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{staffAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/admin/applications/{{applicationId}}/approve/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"allowed_services\": [\n    \"DELIVERY_BIKE\"\n  ],\n  \"allowed_cities\": [\n    \"Lagos\"\n  ],\n  \"billing_mode\": \"PREPAID\",\n  \"credit_limit\": \"0.00\",\n  \"issue_sandbox_key\": true,\n  \"verification_status\": \"VERIFIED\",\n  \"risk_tier\": \"STANDARD\",\n  \"verification_notes\": \"Business registration and owner identity reference reviewed.\",\n  \"review_notes\": \"Approved for sandbox onboarding.\"\n}"
        }
      }
    },
    {
      "name": "1a-4. Staff Reject Partner Application",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{staffAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/admin/applications/{{applicationId}}/reject/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"verification_status\": \"NEEDS_INFO\",\n  \"verification_notes\": \"Registration evidence needs to be updated.\",\n  \"review_notes\": \"Application needs updated service-area and verification details.\"\n}"
        }
      }
    },
    {
      "name": "1b. Activate Partner Portal",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('partnerAccessToken', body.access);",
              "pm.test('portal activated', () => pm.expect(body.access).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/auth/activate/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"token\": \"{{portalActivationToken}}\",\n  \"password\": \"{{partnerPassword}}\"\n}"
        }
      }
    },
    {
      "name": "1c. Partner Portal Login",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('partnerAccessToken', body.access);",
              "pm.test('portal login succeeded', () => pm.expect(body.access).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/auth/login/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email_or_phone\": \"{{partnerEmailOrPhone}}\",\n  \"password\": \"{{partnerPassword}}\"\n}"
        }
      }
    },
    {
      "name": "1d. Portal Me",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "url": "{{baseUrl}}/portal/me/"
      }
    },
    {
      "name": "1d-2. Portal Invite Team Member",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/team/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"phone\": \"2348000009110\",\n  \"email\": \"finance@sandbox-commerce.example\",\n  \"first_name\": \"Finance\",\n  \"last_name\": \"Lead\",\n  \"role\": \"FINANCE\",\n  \"metadata\": {\"source\": \"postman_portal\"}\n}"
        }
      }
    },
    {
      "name": "1e. Portal Sandbox Quote",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('quoteId', body.quote_id);",
              "pm.test('portal sandbox quote created', () => pm.expect(body.quote_id).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/delivery-quotes/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"service_type\": \"DELIVERY_BIKE\",\n  \"pickup\": {\"label\": \"Warehouse 12, Yaba\", \"latitude\": \"6.5000000000\", \"longitude\": \"3.3700000000\", \"city\": \"Lagos\"},\n  \"dropoff\": {\"label\": \"Customer Address, Ikeja\", \"latitude\": \"6.6010000000\", \"longitude\": \"3.3510000000\", \"city\": \"Lagos\"},\n  \"package\": {\"description\": \"Phone accessories\", \"weight_kg\": \"1.20\"}\n}"
        }
      }
    },
    {
      "name": "1f. Portal Create Sandbox Delivery",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('deliveryId', body.delivery_id);",
              "pm.collectionVariables.set('trackingUrl', body.tracking_url);",
              "pm.test('portal sandbox delivery created', () => pm.expect(body.delivery_id).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/deliveries/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"quote_id\": \"{{quoteId}}\",\n  \"external_order_id\": \"PORTAL-ORDER-1001\",\n  \"service_type\": \"DELIVERY_BIKE\",\n  \"pickup\": {\"label\": \"Warehouse 12, Yaba\", \"latitude\": \"6.5000000000\", \"longitude\": \"3.3700000000\", \"city\": \"Lagos\"},\n  \"dropoff\": {\"label\": \"Customer Address, Ikeja\", \"latitude\": \"6.6010000000\", \"longitude\": \"3.3510000000\", \"city\": \"Lagos\"},\n  \"package\": {\"description\": \"Phone accessories\", \"weight_kg\": \"1.20\"},\n  \"recipient\": {\"name\": \"Customer One\", \"phone\": \"2348000009002\", \"email\": \"customer@example.com\"},\n  \"delivery_instructions\": \"Call on arrival.\",\n  \"metadata\": {\"source\": \"postman_portal\"}\n}"
        }
      }
    },
    {
      "name": "1g. Portal Simulate Sandbox Delivery",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/deliveries/{{deliveryId}}/simulate/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"action\": \"COMPLETE\",\n  \"driver_id\": \"sandbox-driver-42\",\n  \"vehicle_id\": \"sandbox-bike-42\"\n}"
        }
      }
    },
    {
      "name": "1g-2. Portal Reset Sandbox",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('partnerApiKey', body.api_key);",
              "pm.test('fresh sandbox key issued', () => pm.expect(body.api_key).to.be.ok);",
              "pm.test('reset stayed in sandbox', () => pm.expect(body.environment).to.eql('SANDBOX'));"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/sandbox/reset/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"credential_name\": \"Postman sandbox key\"\n}"
        }
      }
    },
    {
      "name": "1h. Portal Ledger",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "url": "{{baseUrl}}/portal/ledger-entries/"
      }
    },
    {
      "name": "1i. Portal Ledger CSV Export",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "url": "{{baseUrl}}/portal/ledger-entries/export.csv?status=POSTED"
      }
    },
    {
      "name": "1j. Portal Initialize Wallet Top-Up",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('topupReference', body.provider_reference);",
              "pm.test('portal top-up initialized', () => pm.expect(body.checkout_url).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/billing/topups/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"amount\": \"50000.00\",\n  \"callback_url\": \"https://example.com/paystack/callback\",\n  \"metadata\": {\"purchase_order\": \"PORTAL-PO-1001\"}\n}"
        }
      }
    },
    {
      "name": "1k. Portal Verify Wallet Top-Up",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/billing/topups/verify/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"reference\": \"{{topupReference}}\"\n}"
        }
      }
    },
    {
      "name": "1k-2. Portal Go-Live Readiness",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.test('readiness checks returned', () => pm.expect(body.checks).to.be.an('array'));",
              "pm.test('recommended checklist returned', () => pm.expect(body.recommended_checklist).to.be.an('object'));"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "url": "{{baseUrl}}/portal/readiness/"
      }
    },
    {
      "name": "1l. Activate Live Access",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('liveRequestId', body.live_request_id);",
              "pm.test('live access decision recorded', () => pm.expect(body.live_request_id).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/portal/go-live-requests/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"requested_services\": [\n    \"DELIVERY_BIKE\"\n  ],\n  \"requested_cities\": [\n    \"Lagos\"\n  ],\n  \"expected_monthly_deliveries\": 500,\n  \"production_webhook_url\": \"https://sandbox-commerce.example/webhooks/everest\",\n  \"checklist\": {\n    \"kyb_verified\": true,\n    \"sandbox_delivery_completed\": true,\n    \"webhook_signature_verified\": true,\n    \"finance_reconciliation_tested\": true\n  },\n  \"notes\": \"Ready for ecommerce pilot launch.\"\n}"
        }
      }
    },
    {
      "name": "1m. Staff List Go-Live Requests",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "if (body.results && body.results[0]) pm.collectionVariables.set('liveRequestId', body.results[0].live_request_id);",
              "pm.test('staff go-live list returned', () => pm.expect(body.results).to.be.an('array'));"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{staffAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "url": "{{baseUrl}}/admin/go-live-requests/?status=PENDING"
      }
    },
    {
      "name": "1n. Staff Approve Go-Live Request",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "if (body.api_key) pm.collectionVariables.set('partnerApiKey', body.api_key);",
              "pm.test('go-live approved', () => pm.expect(body.live_request.status).to.eql('APPROVED'));"
            ]
          }
        }
      ],
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{staffAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/admin/go-live-requests/{{liveRequestId}}/approve/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"scopes\": [\"deliveries:create\", \"deliveries:read\", \"deliveries:cancel\", \"deliveries:dispatch\", \"deliveries:proof\", \"webhooks:manage\", \"audit:read\", \"billing:read\"],\n  \"allowed_ips\": [],\n  \"issue_live_key\": true,\n  \"review_notes\": \"Readiness evidence reviewed. Approved for live traffic.\"\n}"
        }
      }
    },
    {
      "name": "1o. Staff Reject Go-Live Request",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{staffAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/admin/go-live-requests/{{liveRequestId}}/reject/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"review_notes\": \"Please complete missing readiness checks and resubmit.\"\n}"
        }
      }
    },
    {
      "name": "2. Quote Delivery",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('quoteId', body.quote_id);",
              "pm.test('quote created', () => pm.expect(body.quote_id).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/delivery-quotes/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"service_type\": \"DELIVERY_BIKE\",\n  \"pickup\": {\n    \"label\": \"Warehouse 12, Yaba\",\n    \"latitude\": \"6.5000000000\",\n    \"longitude\": \"3.3700000000\",\n    \"city\": \"Lagos\"\n  },\n  \"dropoff\": {\n    \"label\": \"Customer Address, Ikeja\",\n    \"latitude\": \"6.6010000000\",\n    \"longitude\": \"3.3510000000\",\n    \"city\": \"Lagos\"\n  },\n  \"package\": {\n    \"description\": \"Phone accessories\",\n    \"weight_kg\": \"1.20\"\n  }\n}"
        }
      }
    },
    {
      "name": "3. Create Delivery From Quote",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('deliveryId', body.delivery_id);",
              "pm.collectionVariables.set('trackingUrl', body.tracking_url);",
              "pm.test('delivery created', () => pm.expect(body.delivery_id).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "postman-order-{{$guid}}"
          }
        ],
        "url": "{{baseUrl}}/deliveries/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"quote_id\": \"{{quoteId}}\",\n  \"external_order_id\": \"POSTMAN-ORDER-{{$timestamp}}\",\n  \"service_type\": \"DELIVERY_BIKE\",\n  \"pickup\": {\n    \"label\": \"Warehouse 12, Yaba\",\n    \"latitude\": \"6.5000000000\",\n    \"longitude\": \"3.3700000000\",\n    \"city\": \"Lagos\"\n  },\n  \"dropoff\": {\n    \"label\": \"Customer Address, Ikeja\",\n    \"latitude\": \"6.6010000000\",\n    \"longitude\": \"3.3510000000\",\n    \"city\": \"Lagos\"\n  },\n  \"package\": {\n    \"description\": \"Phone accessories\",\n    \"weight_kg\": \"1.20\"\n  },\n  \"recipient\": {\n    \"name\": \"Customer One\",\n    \"phone\": \"2348000009002\",\n    \"email\": \"customer@example.com\"\n  },\n  \"delivery_instructions\": \"Call on arrival.\",\n  \"metadata\": {\n    \"channel\": \"postman\"\n  }\n}"
        }
      }
    },
    {
      "name": "4. Sandbox Simulate Assigned",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/sandbox/deliveries/{{deliveryId}}/simulate/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"action\": \"ASSIGN_DRIVER\",\n  \"driver_id\": \"sandbox-driver-42\",\n  \"vehicle_id\": \"sandbox-bike-42\"\n}"
        }
      }
    },
    {
      "name": "5. Sandbox Simulate Pickup",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/sandbox/deliveries/{{deliveryId}}/simulate/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"action\": \"PICKUP\",\n  \"driver_id\": \"sandbox-driver-42\"\n}"
        }
      }
    },
    {
      "name": "6. Sandbox Simulate Complete",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/sandbox/deliveries/{{deliveryId}}/simulate/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"action\": \"COMPLETE\",\n  \"driver_id\": \"sandbox-driver-42\"\n}"
        }
      }
    },
    {
      "name": "7. Read Delivery",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/deliveries/{{deliveryId}}/"
      }
    },
    {
      "name": "8. Public Tracking",
      "request": {
        "auth": {
          "type": "noauth"
        },
        "method": "GET",
        "url": "{{trackingUrl}}"
      }
    },
    {
      "name": "9. Create Webhook Endpoint",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('webhookEndpointId', body.id);",
              "pm.test('signing secret shown once', () => pm.expect(body.signing_secret).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/webhook-endpoints/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"url\": \"https://example.com/webhooks/everest\",\n  \"events\": [\"partner.delivery.*\", \"partner.billing.*\"]\n}"
        }
      }
    },
    {
      "name": "10. Queue Webhook Test",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('webhookDeliveryId', body.webhook_delivery_id);",
              "pm.test('test webhook queued', () => pm.expect(body.payload.test).to.eql(true));"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": "{{baseUrl}}/webhook-endpoints/{{webhookEndpointId}}/test/",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"event_type\": \"partner.delivery.created\",\n  \"payload\": {\n    \"external_order_id\": \"POSTMAN-WEBHOOK-TEST\"\n  },\n  \"deliver_now\": false\n}"
        }
      }
    },
    {
      "name": "11. List Webhook Deliveries",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/webhook-deliveries/"
      }
    },
    {
      "name": "12. Retry Webhook Delivery",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/webhook-deliveries/{{webhookDeliveryId}}/retry/"
      }
    },
    {
      "name": "13. Billing Summary",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/billing/summary/"
      }
    },
    {
      "name": "14. Ledger Entries",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/ledger-entries/?limit=50"
      }
    },
    {
      "name": "15. List Deliveries",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/deliveries/?limit=50"
      }
    },
    {
      "name": "16. List Delivery Proofs",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/deliveries/{{deliveryId}}/proofs/"
      }
    },
    {
      "name": "17. Record Delivery Proof",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/deliveries/{{deliveryId}}/proofs/",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"proof_type\": \"DELIVERY\",\n  \"signature_name\": \"Sandbox Recipient\",\n  \"notes\": \"Received in good condition.\",\n  \"metadata\": {\n    \"source\": \"postman\"\n  }\n}"
        }
      }
    },
    {
      "name": "18. Cancel Delivery",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/deliveries/{{deliveryId}}/cancel/",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"reason\": \"Customer cancelled before pickup.\"\n}"
        }
      }
    },
    {
      "name": "19. Retry Delivery Dispatch",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/deliveries/{{deliveryId}}/dispatch/retry/"
      }
    },
    {
      "name": "20. List Webhook Endpoints",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/webhook-endpoints/"
      }
    },
    {
      "name": "21. Rotate Webhook Secret",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/webhook-endpoints/{{webhookEndpointId}}/rotate-secret/"
      }
    },
    {
      "name": "22. List Wallet Top-Ups",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/billing/topups/"
      }
    },
    {
      "name": "23. Initialize Wallet Top-Up",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/billing/topups/",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"amount\": \"50000.00\",\n  \"callback_url\": \"https://example.com/billing/topup-complete\",\n  \"metadata\": {\n    \"source\": \"postman\"\n  }\n}"
        }
      }
    },
    {
      "name": "24. Verify Wallet Top-Up",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/billing/topups/verify/",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"reference\": \"{{topupReference}}\"\n}"
        }
      }
    },
    {
      "name": "25. List Invoices",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/billing/invoices/?limit=50"
      }
    },
    {
      "name": "26. Issue Invoice",
      "event": [
        {
          "listen": "test",
          "script": {
            "type": "text/javascript",
            "exec": [
              "const body = pm.response.json();",
              "pm.collectionVariables.set('invoiceId', body.invoice_id);",
              "pm.test('invoice issued', () => pm.expect(body.invoice_id).to.be.ok);"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/billing/invoices/",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"period_start\": \"2026-08-01T00:00:00Z\",\n  \"period_end\": \"2026-09-01T00:00:00Z\",\n  \"due_at\": \"2026-09-08T00:00:00Z\",\n  \"metadata\": {\n    \"source\": \"postman\"\n  }\n}"
        }
      }
    },
    {
      "name": "27. Read Invoice",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/billing/invoices/{{invoiceId}}/"
      }
    },
    {
      "name": "28. Mark Invoice Paid",
      "request": {
        "method": "POST",
        "url": "{{baseUrl}}/billing/invoices/{{invoiceId}}/mark-paid/",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"settlement_reference\": \"POSTMAN-SETTLEMENT-001\",\n  \"metadata\": {\n    \"source\": \"postman\"\n  }\n}"
        }
      }
    },
    {
      "name": "29. Export Ledger CSV",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/ledger-entries/export.csv"
      }
    },
    {
      "name": "30. List API Audit Logs",
      "request": {
        "method": "GET",
        "url": "{{baseUrl}}/audit-logs/"
      }
    },
    {
      "name": "31. Portal Security Activity",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "GET",
        "url": "{{baseUrl}}/portal/security/events/"
      }
    },
    {
      "name": "32. Portal Sign Out All Sessions",
      "request": {
        "auth": {
          "type": "bearer",
          "bearer": [
            {
              "key": "token",
              "value": "{{partnerAccessToken}}",
              "type": "string"
            }
          ]
        },
        "method": "POST",
        "url": "{{baseUrl}}/portal/security/sessions/revoke/"
      }
    }
  ]
}
