WISPGate API Reference
Developer Resources
Resource Page / API Reference

API Reference.

A developer-grade resource experience for WISPGate’s platform endpoints, authentication model, request/response patterns, and implementation flows.

WISPGate provides a structured, predictable API for integrating core network infrastructure, billing logic, and support workflows directly into your external tools.

4
API Domains
1
Endpoint Inner Page
6
Core Dev Sections
24/7
Integration Ready
Navigation

Quick Access

Landing pageDomain-based endpoint browsing and quick-start concepts
Inner pageDeep endpoint view with auth, payloads, schemas, and errors
API Gateway
Subscribers
Billing
Tickets
Provisioning
Webhooks

API reference landing page

This outer resource page acts as a category-level endpoint discovery hub, featuring auth overviews, versioning notes, and links into detailed endpoint implementations.

Page 01 / API Hub Landing

The entry point into the WISPGate platform API.

Group the API by business domains that make operational sense: subscribers, billing, network/provisioning, and support/automation.

Developer Resource Layout
S

Subscribers & CRM

Accounts, contacts, services, addresses, inventory bindings, and lifecycle operations.

B

Billing & Payments

Invoices, transactions, subscriptions, payment application, balances, credits, and finance actions.

N

Network & Provisioning

AAA, session actions, service activation, package enforcement, device mapping, and provisioning hooks.

A

Automation & Support

Tickets, events, webhooks, notifications, workflows, and system-triggered actions.

GET

Featured endpoints

Highlight the endpoints users touch first: list subscribers, create invoice, fetch service package, open ticket, trigger payment reconciliation, get webhook events.

v1

Version framing

Surface API version, auth method, pagination pattern, and response envelope at the top. Developers should not have to hunt for these basics.

Developer journey on the landing page

1

Understand auth

User sees tokens, environments, headers, and rate-limit behavior immediately.

2

Browse domain

User chooses the operational area instead of sifting through an unstructured endpoint dump.

3

Open endpoint page

Detailed request/response examples, parameters, schemas, and errors are shown in one clean layout.

Page 02 / Endpoint Inner Page

Template example: Create Subscriber API endpoint.

This inner page shows how an individual endpoint should be documented: purpose, auth, request shape, response shape, field definitions, examples, error cases, and related workflows.

Endpoint Template / Example
Overview
Parameters
Responses
Errors
POST/api/v1/subscribers

Create a subscriber

Creates a new subscriber record in WISPGate with core identity, contact, billing, and service-association data. This endpoint should be treated as a business-critical entry point because downstream workflows often depend on the quality of the initial record.

Purpose

Create base identity

Establish the customer record before service binding, billing actions, or provisioning flows begin.

Used by

Sales / onboarding / migration

This endpoint is typically used by onboarding forms, imports, integrations, and internal admin tools.

Critical note

Bad input creates downstream pain

Duplicate, incomplete, or malformed subscriber data will poison billing, support, and provisioning later.

Authentication
Headers

Auth model

  • Bearer token passed via Authorization header
  • Environment-specific base URL
  • Optional idempotency key for safe retries on create actions
  • Tenant or workspace scoping if multi-tenant access is enabled
Authorization: Bearer <api_token> Content-Type: application/json Accept: application/json X-Idempotency-Key: 4b71d8f2-sample-key X-Tenant-ID: tenant_demo_001
// Request example POST /api/v1/subscribers { "external_id": "crm-23991", "full_name": "Jane Doe", "email": "jane@example.com", "phone": "+15550001234", "status": "prospect", "billing_profile_id": "bp_001", "address": { "line1": "101 Fiber Street", "city": "Austin", "state": "TX", "postal_code": "78701" }, "metadata": { "source": "website_signup", "campaign": "spring_launch" } }
Request notes

Field behavior

  • external_id should be used when syncing from another system to prevent duplicate creation.
  • status should reflect lifecycle state, not arbitrary marketing labels.
  • billing_profile_id should reference a valid finance configuration if billing follows immediately.
  • metadata is useful, but do not dump unstructured garbage into it.
// Success response example { "success": true, "data": { "id": "sub_000184", "external_id": "crm-23991", "full_name": "Jane Doe", "status": "prospect", "billing_profile_id": "bp_001", "created_at": "2026-04-13T10:21:00Z" }, "meta": { "request_id": "req_92aa7d", "api_version": "v1" } }
Response notes

Response design

  • Use a predictable envelope for success and errors.
  • Return identifiers that downstream systems can reference safely.
  • Include request tracing metadata where possible for debugging and support.
  • Do not hide useful details behind vague “ok” responses.
{ }

Request schema

external_idstring / optional but strongly recommended for sync safety
full_namestring / required
emailstring / optional
phonestring / optional
statusenum / required
billing_profile_idstring / optional
addressobject / optional
metadataobject / optional
[]

Response schema

successboolean
data.idstring / WISPGate subscriber ID
data.statusenum / current lifecycle state
data.created_attimestamp / ISO 8601
meta.request_idstring / traceable request reference
meta.api_versionstring / version marker
Common errors
400 Bad RequestMalformed or missing required fields
401 UnauthorizedMissing or invalid bearer token
409 ConflictDuplicate subscriber based on external_id or duplicate-rule policy
422 Validation ErrorStructured field validation failed
429 Too Many RequestsRate limit or abuse threshold triggered
// Error response example { "success": false, "error": { "code": "duplicate_subscriber", "message": "A subscriber with the provided external_id already exists.", "field": "external_id" }, "meta": { "request_id": "req_19ba22", "api_version": "v1" } }