Admin — Customer Administration

Administrative endpoints for inspecting customer accounts across the platform. These endpoints require the caller to hold the billing_admin role.

Related: Tier administration lives on its own page — see Tier Management.

Table of Content:

List customers

List every customer in the billing system with optional pagination and filters. Returns a summary per customer — call Get customer details for the full record.

Endpoint: https://apis.threatwinds.com/api/billing/v1/admin/customers

Method: GET

Parameters

Headers

Header Type Required Description
Authorization string Optional* Bearer token for session authentication
api-key string Optional* API key for key-based authentication
api-secret string Optional* API secret for key-based authentication

Note: You must use either the Authorization header OR the api-key/api-secret combination.

Query Parameters

Parameter Type Required Description Example
page int No Page number (default 1). 1
pageSize int No Page size (default 20, max 100). 20
tierName string No Filter by subscription tier name. pro
status string No Filter by Stripe subscription status (active, past_due, canceled, unpaid). active

Request

curl -X 'GET' \
  'https://apis.threatwinds.com/api/billing/v1/admin/customers?page=1&pageSize=20&status=active' \
  -H 'Authorization: Bearer <token>'

Response

Success Response (200 OK)

{
  "customers": [
    {
      "id": "a1b2c3d4-5633-4b16-bbf0-5ca22ef8ea2e",
      "name": "Acme Corp",
      "tierName": "pro",
      "subscriptionStatus": "active",
      "memberCount": 12,
      "createdAt": "2026-02-03T09:14:22Z"
    }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalCount": 342,
    "totalPages": 18,
    "hasNext": true,
    "hasPrev": false
  }
}

Response Schema

Field Type Description
customers array Array of customer summary objects.
customers[].id string Customer UUID.
customers[].name string Customer display name.
customers[].tierName string Current subscription tier name.
customers[].subscriptionStatus string Stripe subscription status.
customers[].memberCount int Number of team members currently on the account.
customers[].createdAt string ISO 8601 timestamp the customer was created.
pagination object Standard pagination envelope.

Error Codes

Status Description Cause
200 OK Success.
400 Bad Request Invalid query parameters.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Caller does not hold the billing_admin role.

Get customer details

Retrieve the full administrative record for a single customer — including subscription state, tier, member count, and the account owner’s user ID.

Endpoint: https://apis.threatwinds.com/api/billing/v1/admin/customer/{customerID}

Method: GET

Parameters

Headers

Same as List customers.

Path Parameters

Parameter Type Required Description Example
customerID string Yes Customer UUID. “a1b2c3d4-5633-4b16-bbf0-5ca22ef8ea2e”

Request

curl -X 'GET' \
  'https://apis.threatwinds.com/api/billing/v1/admin/customer/a1b2c3d4-5633-4b16-bbf0-5ca22ef8ea2e' \
  -H 'Authorization: Bearer <token>'

Response

Success Response (200 OK)

{
  "id": "a1b2c3d4-5633-4b16-bbf0-5ca22ef8ea2e",
  "name": "Acme Corp",
  "createdAt": "2026-02-03T09:14:22Z",
  "tierName": "pro",
  "tierID": "e1f2a3b4-5633-4b16-bbf0-5ca22ef8ea2e",
  "subscriptionStatus": "active",
  "subscriptionEnabled": true,
  "memberCount": 12,
  "ownerUserID": "5f35d2c4-5633-4b16-bbf0-5ca22ef8ea2e"
}

Response Schema

Field Type Description
id string Customer UUID.
name string Customer display name.
createdAt string ISO 8601 timestamp the customer was created.
tierName string Current subscription tier name.
tierID string UUID of the current subscription tier.
subscriptionStatus string Stripe subscription status.
subscriptionEnabled bool Whether the subscription is active and in good standing.
memberCount int Number of team members currently on the account.
ownerUserID string UUID of the account owner.

Error Codes

Status Description Cause
200 OK Success.
400 Bad Request Invalid customerID format.
401 Unauthorized Missing or invalid credentials.
403 Forbidden Caller does not hold the billing_admin role.
404 Not Found No customer with the given ID exists.