---
title: "Admin \u2014 general"
path: reference/api/admin
status: published
---

# Admin — general

**9 endpoints** in this group. All paths are prefixed with `/api/v1`.

## Endpoints in this group

- [`POST /api/v1/admin/catalog/plans`](#post-api-v1-admin-catalog-plans) — Create Plan
- [`PUT /api/v1/admin/catalog/plans/{plan_id}`](#put-api-v1-admin-catalog-plans-plan-id) — Update Plan
- [`PUT /api/v1/admin/catalog/plans/{plan_id}/pricing-tiers`](#put-api-v1-admin-catalog-plans-plan-id-pricing-tiers) — Replace Pricing Tiers
- [`POST /api/v1/admin/catalog/services`](#post-api-v1-admin-catalog-services) — Create Service
- [`PUT /api/v1/admin/catalog/services/{slug}`](#put-api-v1-admin-catalog-services-slug) — Update Service
- [`GET /api/v1/admin/registry/services`](#get-api-v1-admin-registry-services) — List Registry Services
- [`POST /api/v1/admin/registry/services/{slug}/approve`](#post-api-v1-admin-registry-services-slug-approve) — Approve Service
- [`POST /api/v1/admin/registry/services/{slug}/rotate-key`](#post-api-v1-admin-registry-services-slug-rotate-key) — Rotate Service Api Key
- [`POST /api/v1/admin/registry/services/{slug}/suspend`](#post-api-v1-admin-registry-services-slug-suspend) — Suspend Service

---

### POST `/api/v1/admin/catalog/plans` — Create Plan {#post-api-v1-admin-catalog-plans}

**Parameters**:

- `authorization` (header, string, optional)


**Body**: `PlanCreateRequest` — {`service_id`, `slug`, `name`, `description` + 10 more}


**Responses**:

- `201` — Successful Response. Returns: `ApiResponse_PlanResponse_` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### PUT `/api/v1/admin/catalog/plans/{plan_id}` — Update Plan {#put-api-v1-admin-catalog-plans-plan-id}

**Parameters**:

- `plan_id` (path, string, required)
- `authorization` (header, string, optional)


**Body**: `PlanUpdateRequest` — {`name`, `description`, `base_price_cents`, `features` + 6 more}


**Responses**:

- `200` — Successful Response. Returns: `ApiResponse_PlanResponse_` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### PUT `/api/v1/admin/catalog/plans/{plan_id}/pricing-tiers` — Replace Pricing Tiers {#put-api-v1-admin-catalog-plans-plan-id-pricing-tiers}

Replace all pricing tiers for a plan.

**Parameters**:

- `plan_id` (path, string, required)
- `authorization` (header, string, optional)


**Body**: array of `PricingTierInput`


**Responses**:

- `200` — Successful Response. Returns: `ApiResponse_list_PlanPricingTierResponse__` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### POST `/api/v1/admin/catalog/services` — Create Service {#post-api-v1-admin-catalog-services}

**Parameters**:

- `authorization` (header, string, optional)


**Body**: `ServiceCreateRequest` — {`slug`, `parent_slug`, `name`, `description` + 11 more}


**Responses**:

- `201` — Successful Response. Returns: `ApiResponse_AdminServiceRegistryResponse_` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### PUT `/api/v1/admin/catalog/services/{slug}` — Update Service {#put-api-v1-admin-catalog-services-slug}

**Parameters**:

- `slug` (path, string, required)
- `authorization` (header, string, optional)


**Body**: `ServiceUpdateRequest` — {`parent_slug`, `name`, `description`, `version` + 10 more}


**Responses**:

- `200` — Successful Response. Returns: `ApiResponse_AdminServiceRegistryResponse_` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### GET `/api/v1/admin/registry/services` — List Registry Services {#get-api-v1-admin-registry-services}

**Parameters**:

- `authorization` (header, string, optional)


**Responses**:

- `200` — Successful Response. Returns: `ApiResponse_list_AdminServiceRegistryResponse__` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### POST `/api/v1/admin/registry/services/{slug}/approve` — Approve Service {#post-api-v1-admin-registry-services-slug-approve}

Approve a pending service registration.

**Parameters**:

- `slug` (path, string, required)
- `authorization` (header, string, optional)


**Responses**:

- `200` — Successful Response. Returns: `ApiResponse_AdminServiceRegistryResponse_` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### POST `/api/v1/admin/registry/services/{slug}/rotate-key` — Rotate Service Api Key {#post-api-v1-admin-registry-services-slug-rotate-key}

Rotate the API key for a registered service.

Returns the new plaintext API key (only shown once).

**Parameters**:

- `slug` (path, string, required)
- `authorization` (header, string, optional)


**Responses**:

- `200` — Successful Response. Returns: `ApiResponse_dict_` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}


### POST `/api/v1/admin/registry/services/{slug}/suspend` — Suspend Service {#post-api-v1-admin-registry-services-slug-suspend}

Suspend a service, preventing new subscriptions and marking it inactive.

**Parameters**:

- `slug` (path, string, required)
- `authorization` (header, string, optional)


**Responses**:

- `200` — Successful Response. Returns: `ApiResponse_AdminServiceRegistryResponse_` — {`data`, `meta`}
- `422` — Validation Error. Returns: `HTTPValidationError` — {`detail`}
