Preskoči na vsebino

REST API Reference

Base Configuration

Base URL: {site_url}/wp-json/wu/v2/ Authentication: API Key & Secret (HTTP Basic Auth or URL Parameters)

Authentication

Enable API

// Enable API in Ultimate Multisite settings or programmatically
wu_save_setting('enable_api', true);

Get API Credentials

$api_key = wu_get_setting('api_key');
$api_secret = wu_get_setting('api_secret');

Authentication Methods

HTTP Basic Auth (Recommended):

curl -u "api_key:api_secret" https://yoursite.com/wp-json/wu/v2/customers

URL Parameters:

curl "https://yoursite.com/wp-json/wu/v2/customers?api_key=your_key&api_secret=your_secret"

Core Endpoints

1. Customers API

Base Route: /customers

Get All Customers

GET /wu/v2/customers

Get Single Customer

GET /wu/v2/customers/{id}

Create Customer

POST /wu/v2/customers
Content-Type: application/json

{
"user_id": 123,
"email_verification": "verified",
"type": "customer",
"has_trialed": false,
"vip": false
}

Update Customer

PUT /wu/v2/customers/{id}
Content-Type: application/json

{
"vip": true,
"extra_information": "VIP customer notes"
}

Delete Customer

DELETE /wu/v2/customers/{id}

2. Sites API

Base Route: /sites

Create Site

POST /wu/v2/sites
Content-Type: application/json

{
"customer_id": 5,
"membership_id": 10,
"domain": "example.com",
"path": "/",
"title": "My New Site",
"template_id": 1,
"type": "customer_owned"
}

3. Memberships API

Base Route: /memberships

Create Membership

POST /wu/v2/memberships
Content-Type: application/json

{
"customer_id": 5,
"plan_id": 3,
"status": "active",
"gateway": "stripe",
"gateway_subscription_id": "sub_1234567890",
"auto_renew": true
}

4. Products API

Base Route: /products

Get All Products

GET /wu/v2/products

5. Payments API

Base Route: /payments

Create Payment

POST /wu/v2/payments
Content-Type: application/json

{
"customer_id": 5,
"membership_id": 10,
"status": "completed",
"gateway": "stripe",
"gateway_payment_id": "pi_1234567890",
"total": 29.99,
"currency": "USD"
}

6. Domains API

Base Route: /domains

Map Domain

POST /wu/v2/domains
Content-Type: application/json

{
"domain": "custom-domain.com",
"customer_id": 5,
"primary_domain": 1,
"stage": "domain-mapping"
}

Registration Endpoint

The /register endpoint provides a complete checkout/registration flow:

POST /wu/v2/register
Content-Type: application/json

{
"customer": {
"username": "newuser",
"password": "securepass123",
"email": "[email protected]"
},
"products": ["basic-plan"],
"duration": 1,
"duration_unit": "month",
"auto_renew": true,
"site": {
"site_url": "mynewsite",
"site_title": "My New Site",
"template_id": 1
},
"payment": {
"status": "completed"
},
"membership": {
"status": "active"
}
}

Response:

{
"customer": { ... },
"membership": { ... },
"payment": { ... },
"site": { "id": 123 }
}

Sovereign Tenant Endpoints

Ultimate Multisite: Multi-Tenancy 1.2.0 adds sovereign tenant REST coverage for integrations that provision, inspect, or verify isolated tenants.

The exact request payload depends on the enabled host capability, but integrations should expect these endpoint groups:

POST /wu/v2/tenants/{site_id}/bootstrap
GET /wu/v2/tenants/{site_id}/migration-status
POST /wu/v2/tenants/{site_id}/verify
DELETE /wu/v2/tenants/{site_id}

Use the bootstrap endpoint to prepare tenant registry, database, filesystem, and routing state. Use migration status and verification endpoints before switching production traffic. Use the deletion endpoint for sovereign teardown so database credentials are removed through the addon cleanup flow.

Typical migration status responses include:

{
"site_id": 123,
"isolation_model": "sovereign",
"database_host": "localhost",
"verification": {
"no_legacy": "passed",
"sovereign_push": "passed",
"tenant_users": "passed"
},
"ready": true
}

Treat ready: false as a pre-launch blocker. Check the verification details, fix the database host binding, queue, user provisioning, or routing issue, then retry verification.

Error Responses

{
"code": "wu_rest_invalid_parameter",
"message": "Invalid parameter value",
"data": {
"status": 400,
"params": {
"email": "Invalid email format"
}
}
}

Pagination and Filtering

Query Parameters:

GET /wu/v2/customers?per_page=20&page=2&search=john&status=active

Common parameters:

  • per_page - Items per page (default: 20, max: 100)
  • page - Page number
  • search - Search term
  • orderby - Sort field
  • order - Sort direction (asc/desc)
  • status - Filter by status
  • date_created - Filter by date range