Organization Governance

Approve, reject, suspend, and manage organization lifecycle

AuthOS release 0.8.2 API v1 Latest-only documentation
Updated Jul 15, 2026
On this page

Platform owner endpoints for managing organization lifecycle.

Overview

Platform owners control which organizations can use the platform:

Action Description
Approve Activates pending organization
Reject Denies pending organization with reason
Suspend Temporarily disables active organization
Activate Re-enables suspended organization
Delete Permanently removes organization

Endpoints

Method Path Description
GET /api/platform/tiers List tiers
GET /api/platform/organizations List all orgs
POST /api/platform/organizations/:id/approve Approve org
POST /api/platform/organizations/:id/reject Reject org
POST /api/platform/organizations/:id/suspend Suspend org
POST /api/platform/organizations/:id/activate Reactivate org
PATCH /api/platform/organizations/:id/tier Change tier
DELETE /api/platform/organizations/:id Delete org

GET /api/platform/tiers

List available organization tiers.

Response (200 OK)

[
  {
    "id": "tier_free",
    "name": "free",
    "display_name": "Free Tier",
    "default_max_services": 3,
    "default_max_users": 100,
    "price_cents": 0
  },
  {
    "id": "tier_pro",
    "name": "pro",
    "display_name": "Professional",
    "default_max_services": 10,
    "default_max_users": 1000,
    "price_cents": 9900
  }
]

GET /api/platform/organizations

List all organizations with filtering.

Query Parameters

Parameter Type Description
status string pending, active, suspended, rejected
tier_id string Filter by tier
limit integer Max results (default: 50)
offset integer Pagination offset

Example Request

curl -X GET "https://sso.example.com/api/platform/organizations?status=pending" \
  -H "Authorization: Bearer {platform_owner_jwt}"

Response (200 OK)

{
  "organizations": [
    {
      "organization": {
        "id": "org-uuid",
        "slug": "acme-corp",
        "name": "Acme Corporation",
        "status": "active",
        "tier_id": "tier_pro",
        "created_at": "2025-01-15T10:30:00Z"
      },
      "owner": {
        "id": "user-uuid",
        "email": "owner@acme.com",
        "is_platform_owner": false,
        "created_at": "2025-01-10T08:00:00Z"
      },
      "tier": {
        "id": "tier_pro",
        "name": "pro",
        "display_name": "Professional"
      }
    }
  ],
  "total": 42
}

[!NOTE] If an organization’s owner user has been deleted, the owner fields will contain fallback values:

  • owner.id: "unknown"
  • owner.email: "deleted-user@unknown"
  • owner.is_platform_owner: false
  • owner.created_at: "1970-01-01T00:00:00Z"

POST /api/platform/organizations/:id/approve

Approve a pending organization.

Request Body

Field Type Required Description
tier_id string No Tier to assign (default: free)

Example Request

curl -X POST https://sso.example.com/api/platform/organizations/org-uuid/approve \
  -H "Authorization: Bearer {platform_owner_jwt}" \
  -H "Content-Type: application/json" \
  -d '{"tier_id": "tier_pro"}'

Response (200 OK)

{
  "organization": {
    "id": "org-uuid",
    "status": "active",
    "approved_at": "2025-01-15T10:30:00Z"
  }
}

POST /api/platform/organizations/:id/reject

Reject a pending organization.

Request Body

Field Type Required Description
reason string Yes Rejection reason

Example Request

curl -X POST https://sso.example.com/api/platform/organizations/org-uuid/reject \
  -H "Authorization: Bearer {platform_owner_jwt}" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Insufficient information provided"}'

POST /api/platform/organizations/:id/suspend

Suspend an active organization.

Request Body

Field Type Required Description
reason string No Suspension reason

POST /api/platform/organizations/:id/activate

Reactivate a suspended organization.


PATCH /api/platform/organizations/:id/tier

Update organization tier.

Request Body

Field Type Required Description
tier_id string Yes New tier ID
max_services integer No Custom service limit
max_users integer No Custom user limit

DELETE /api/platform/organizations/:id

Permanently delete an organization.

[!CAUTION] This permanently deletes the organization and all associated data.