Sandbox
Integration testing without production customers
Use the Partner API sandbox environment to build and test integrations against the same route shapes and schemas as production without affecting live customers.
Base URL
https://api.phonelineplus.com/sandbox
All paths are relative to that base URL (for example, GET /customers means GET https://api.phonelineplus.com/sandbox/customers). Production uses https://api.phonelineplus.com/v2 instead — see Introduction.
What the sandbox provides
- Same OpenAPI surface as production v2 (customers, jobs, webhooks, numbers, etc.)
- Simulated persistence and job processing
- Same authentication as production —
POST /authwithkeyID+secret, thenAuthorization: Beareron all other routes (see Authentication)
Authentication
Sandbox does not use a different auth scheme. Follow Authentication exactly, but:
- Use the sandbox base URL:
https://api.phonelineplus.com/sandbox - Use sandbox API key and secret (separate from production keys)
Example:
POST https://api.phonelineplus.com/sandbox/auth
Content-Type: application/json
{
"keyID": "<sandbox-key-uuid>",
"secret": "<sandbox-secret>"
}Then call endpoints under /sandbox/... with the returned JWT, for example GET https://api.phonelineplus.com/sandbox/customers.
How to use it
- Obtain sandbox API credentials from your PhoneLine+ / Gamma onboarding contact (separate from production keys).
- Authenticate via
POST /authon the sandbox base URL (same flow as production). - Send the JWT on all subsequent sandbox requests.
- Follow the same guides as production for API behaviour:
Behaviour differences
| Area | Sandbox | Production |
|---|---|---|
| Base URL | https://api.phonelineplus.com/sandbox | https://api.phonelineplus.com/v2 |
| Auth | POST /auth → Bearer JWT (sandbox keys) | POST /auth → Bearer JWT (production keys) |
| Data | Ephemeral / test datastore | Live billing and telephony |
| Jobs | Simulated completion | Real Falcon / CSG orders |
| Side effects | No real calls or billing | Real provisioning |
Implementations may enforce the same validation rules as production (for example, contract patch mutual exclusion).
Recommended test checklist
- Authenticate and refresh JWT before expiry
-
POST /customers→ poll job →GET /customers/{id} -
PATCH .../contractwithtermonly, thenplanonly (two requests) - Reject combined
term+plan(expect 400) - Create webhook and handle verification callback
- Suspend and resume a test customer
Production cutover
- Change base URL from
https://api.phonelineplus.com/sandboxtohttps://api.phonelineplus.com/v2and swap credentials - Re-register webhooks against production URLs
- Re-test
POST /authand a single read-only call before bulk migration
Updated 3 months ago
