# Organization API: Catalog & Services: Staff

> The 13 Organization API operations for staff.

Source: https://docs.coritan.com/api/reference/organizations/catalog-services/staff/

Part of [Catalog & Services](/api/reference/organizations/catalog-services/).

## Operations

| Method | Path | Summary |
| --- | --- | --- |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/cancel`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-cancel) | Staff cancel service |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/cancel-plan-change`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-cancel-plan-change) | Staff cancel plan change |
| GET | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/cancel-preview`](#op-get-api-v1-orgs-org-slug-staff-services-service-id-cancel-preview) | Staff cancel preview |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/change-plan`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-change-plan) | Move the service to another plan of the same cycle |
| PATCH | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/due-date`](#op-patch-api-v1-orgs-org-slug-staff-services-service-id-due-date) | Move the next renewal |
| GET | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/notes`](#op-get-api-v1-orgs-org-slug-staff-services-service-id-notes) | Staff service notes |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/notes`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-notes) | Staff add service note |
| GET | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/plan-options`](#op-get-api-v1-orgs-org-slug-staff-services-service-id-plan-options) | Staff plan options |
| GET | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/plan-preview`](#op-get-api-v1-orgs-org-slug-staff-services-service-id-plan-preview) | Staff plan preview |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/retry-provision`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-retry-provision) | Re-queue provisioning for an order stuck before it had a server |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/suspend`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-suspend) | Staff suspend service |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/terminate`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-terminate) | End a service now with no cancellation credit |
| POST | [`/api/v1/orgs/{org_slug}/staff/services/{service_id}/unsuspend`](#op-post-api-v1-orgs-org-slug-staff-services-service-id-unsuspend) | Staff unsuspend service |

### Staff cancel service {#op-post-api-v1-orgs-org-slug-staff-services-service-id-cancel}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/cancel`

Cancel on the customer's behalf: the same sequence their own button runs,
credit for unused time included, with the staff member on the audit row.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `immediate` | boolean | no |
| `reason` | string or null | no |
| `keep_snapshot` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff cancel plan change {#op-post-api-v1-orgs-org-slug-staff-services-service-id-cancel-plan-change}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/cancel-plan-change`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff cancel preview {#op-get-api-v1-orgs-org-slug-staff-services-service-id-cancel-preview}

`GET /api/v1/orgs/{org_slug}/staff/services/{service_id}/cancel-preview`

#### Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `service_id` | path | integer | yes |  |
| `org_slug` | path | string | yes |  |
| `immediate` | query | boolean | no | Default: `True`. |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Move the service to another plan of the same cycle {#op-post-api-v1-orgs-org-slug-staff-services-service-id-change-plan}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/change-plan`

Move the service to another plan of the same cycle. An upgrade raises
the prorated invoice the customer pays; a downgrade credits the wallet
under the credit policy. The customer's own flow, run by staff.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `org_pricing_id` | integer | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Move the next renewal {#op-patch-api-v1-orgs-org-slug-staff-services-service-id-due-date}

`PATCH /api/v1/orgs/{org_slug}/staff/services/{service_id}/due-date`

Move the next renewal. Extending is goodwill; pulling it in is a
correction. Both are written to the platform service too, so the
invoice run and the suspension sweeper see the same date.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `next_due_date` | string (date) | yes |
| `reason` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff service notes {#op-get-api-v1-orgs-org-slug-staff-services-service-id-notes}

`GET /api/v1/orgs/{org_slug}/staff/services/{service_id}/notes`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff add service note {#op-post-api-v1-orgs-org-slug-staff-services-service-id-notes}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/notes`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `body` | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `201` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff plan options {#op-get-api-v1-orgs-org-slug-staff-services-service-id-plan-options}

`GET /api/v1/orgs/{org_slug}/staff/services/{service_id}/plan-options`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff plan preview {#op-get-api-v1-orgs-org-slug-staff-services-service-id-plan-preview}

`GET /api/v1/orgs/{org_slug}/staff/services/{service_id}/plan-preview`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |
| `org_pricing_id` | query | integer | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Re-queue provisioning for an order stuck before it had a server {#op-post-api-v1-orgs-org-slug-staff-services-service-id-retry-provision}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/retry-provision`

Re-queue provisioning for an order stuck before it had a server.

The order must be this brand's, still pending, provisioning or failed,
have no live server yet, be paid for (or never invoiced), and have no
provision job already queued for it: paying is what starts provisioning,
and this must not be a way around that, whatever the order's status says.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff suspend service {#op-post-api-v1-orgs-org-slug-staff-services-service-id-suspend}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/suspend`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json`

| Field | Type | Required |
| --- | --- | --- |
| `reason` | string or null | no |
| `notify` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### End a service now with no cancellation credit {#op-post-api-v1-orgs-org-slug-staff-services-service-id-terminate}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/terminate`

End a service now with no cancellation credit. This is for abuse, fraud,
or a refund already made. Admin only; the reason is kept.

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Request body

`application/json` (required)

| Field | Type | Required |
| --- | --- | --- |
| `reason` | string | yes |
| `notify_customer` | boolean | no |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |

### Staff unsuspend service {#op-post-api-v1-orgs-org-slug-staff-services-service-id-unsuspend}

`POST /api/v1/orgs/{org_slug}/staff/services/{service_id}/unsuspend`

#### Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| `service_id` | path | integer | yes |
| `org_slug` | path | string | yes |

#### Responses

| Status | Meaning |
| --- | --- |
| `200` | Success. |
| `422` | The request is not valid. `detail` lists each problem. |
