Download OpenAPI specification:
Sintj Rails 8.1 API — spec-first, contract-validated.
Returns all active zones available for tenant provisioning. Requires an internal service key — not exposed to end users. Returns 409 if no zones are configured (a deployment configuration error).
{- "zones": [
- {
- "code": "eu-west",
- "name": "Europe (West)",
- "default": true,
- "active": true
}, - {
- "code": "us-east",
- "name": "US East",
- "default": false,
- "active": true
}
]
}Creates a new active zone available for tenant provisioning. Requires an internal service key — not exposed to end users.
required | object (ZoneInput) |
{- "zone": {
- "code": "ap-south",
- "name": "Asia Pacific (South)",
- "default": false,
- "active": true
}
}{- "zone": {
- "code": "ap-south",
- "name": "Asia Pacific (South)",
- "default": false,
- "active": true
}
}Returns a tenant's full record including per-step onboarding status. Requires an internal service key — not exposed to end users.
| id required | string <uuid> Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7 |
{- "tenant": {
- "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
- "company_name": "Acme Corp",
- "slug": "acme",
- "industry_name": "Technology",
- "db_shard": "eu-west",
- "status": "active",
- "onboarding_status": {
- "status": "completed",
- "steps": [
- {
- "step": "email_verification",
- "status": "completed"
}, - {
- "step": "profile_setup",
- "status": "completed"
}, - {
- "step": "billing_setup",
- "status": "completed"
}
]
}
}
}Soft-deletes a tenant by setting deleted_at. Only disabled tenants may be deleted; attempting to delete an active tenant returns 422. Requires an internal service key — not exposed to end users.
| id required | string <uuid> Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7 |
{- "error_code": "auth.unauthorized",
- "request_id": "550e8400-e29b-41d4-a716-446655440000"
}Returns all provisioned tenants with their aggregate onboarding status. Requires an internal service key — not exposed to end users.
{- "tenants": [
- {
- "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
- "company_name": "Acme Corp",
- "slug": "acme",
- "db_shard": "eu-west",
- "onboarding_status": "completed"
}
]
}Creates a tenant record and seeds pending onboarding status rows. Requires an internal service key — not exposed to end users.
required | object (TenantInput) |
{- "tenant": {
- "company_name": "Acme Corp",
- "slug": "acme",
- "industry_name": "Technology",
- "zone_code": "eu-west"
}
}{- "tenant": {
- "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
- "company_name": "Acme Corp",
- "slug": "acme",
- "industry_name": "Technology",
- "db_shard": "eu-west",
- "status": "active",
- "onboarding_status": {
- "status": "pending",
- "steps": [
- {
- "step": "email_verification",
- "status": "pending"
}, - {
- "step": "profile_setup",
- "status": "pending"
}, - {
- "step": "billing_setup",
- "status": "pending"
}
]
}
}
}Sets a tenant's status to active. Idempotent — enabling an already-active tenant is a no-op and still returns 200. Requires an internal service key.
| id required | string <uuid> Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7 |
{- "success": true
}Sets a tenant's status to disabled. Idempotent — disabling an already-disabled tenant is a no-op and still returns 200. Requires an internal service key.
| id required | string <uuid> Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7 |
{- "success": true
}