# Podcast Admin

**Summary:** Endpoints for Podcast Admin

- Role: [Developers](https://www.subrite.no/developers)
- Source: https://www.subrite.no/developers/podcast-admin
- Updated: 2026-10-13
- Markdown index: https://www.subrite.no/developers/llms.txt

<a id="get-api-v1-podcast-admin"></a>
## Get all podcasts

`GET /api/v1/podcast-admin`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `array of Podcast`

| Name | Type | Description |
| --- | --- | --- |
| `[].provider` (Required when parent is present) | `PodcastProvider` | Allowed values: `"omny_studio"`, `"other"` |
| `[].providerHeaderTokenHint` (Required when parent is present) | `string` | Can be null |
| `[].name` (Required when parent is present) | `string` |   |
| `[].rssFeedUrl` (Required when parent is present) | `string` |   |
| `[].imageUrl` (Required when parent is present) | `string` |   |
| `[].showUrl` (Required when parent is present) | `string` |   |
| `[].description` (Required when parent is present) | `string` |   |
| `[].sortOrder` (Required when parent is present) | `number` |   |
| `[].isAvailableToAllMembers` (Required when parent is present) | `boolean` |   |
| `[].lastSyncedAt` (Required when parent is present) | `string (date-time)` | Can be null |
| `[].tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `[].tenantId` (Required when parent is present) | `number` |   |
| `[].id` (Required when parent is present) | `number` |   |
| `[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].metaData` (Required when parent is present) | `object` |   |

#### 401

unauthorized

### Example request

```bash
curl https://api.subrite.no/api/v1/podcast-admin \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
[
  {
    "provider": "omny_studio",
    "providerHeaderTokenHint": "string",
    "name": "string",
    "rssFeedUrl": "string",
    "imageUrl": "string",
    "showUrl": "string",
    "description": "string",
    "sortOrder": 0,
    "isAvailableToAllMembers": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z",
    "tenant": {
      "additionalFeatures": [],
      "disabledFeatures": [],
      "taxRates": [],
      "products": [],
      "users": [],
      "members": [],
      "roles": [],
      "subscriptionPlans": [],
      "packages": [],
      "invoices": [],
      "orders": [],
      "paymentProviders": [],
      "newslettersProviderConfig": [],
      "paymentProviderConfigs": [],
      "oidcClients": [],
      "oauthProviders": [],
      "activityLogs": [],
      "m2m_api_clients": [],
      "customProperties": [],
      "consents": [],
      "communicationTemplates": [],
      "additionalHostnames": [],
      "exportHistory": [],
      "arReportHistory": [],
      "mypageCardsSettings": [],
      "webhooks": [],
      "customOrders": [],
      "customOrderSources": [],
      "brandKits": [],
      "communicationReceivers": [],
      "metaData": {}
    },
    "tenantId": 0,
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  }
]
```

<a id="post-api-v1-podcast-admin"></a>
## Create a new podcast

`POST /api/v1/podcast-admin`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `CreatePodcastDto`

| Name | Type | Description |
| --- | --- | --- |
| `provider` | `PodcastProvider` | Allowed values: `"omny_studio"`, `"other"` |
| `providerHeaderToken` | `string` | Omny Studio header token. Ignored, and cleared, for any other provider. · `maxLength`: `255` |
| `name` (Required) | `string` | `maxLength`: `1024` |
| `rssFeedUrl` | `string (uri)` | `maxLength`: `1024` |
| `description` | `string` | `maxLength`: `5000` |
| `showUrl` | `string` |   |
| `isAvailableToAllMembers` | `boolean` |   |

**Example request body**

`application/json`

```json
{
  "provider": "omny_studio",
  "providerHeaderToken": "<providerHeaderToken>",
  "name": "string",
  "rssFeedUrl": "http://example.com",
  "description": "string",
  "showUrl": "string",
  "isAvailableToAllMembers": true
}
```

### Responses

#### 201

Content type: `application/json` · `Podcast`

| Name | Type | Description |
| --- | --- | --- |
| `provider` (Required) | `PodcastProvider` | Allowed values: `"omny_studio"`, `"other"` |
| `providerHeaderTokenHint` (Required) | `string` | Can be null |
| `name` (Required) | `string` |   |
| `rssFeedUrl` (Required) | `string` |   |
| `imageUrl` (Required) | `string` |   |
| `showUrl` (Required) | `string` |   |
| `description` (Required) | `string` |   |
| `sortOrder` (Required) | `number` |   |
| `isAvailableToAllMembers` (Required) | `boolean` |   |
| `lastSyncedAt` (Required) | `string (date-time)` | Can be null |
| `tenant` (Required) | `Tenant` | Nested fields omitted: field limit. |
| `tenantId` (Required) | `number` |   |
| `id` (Required) | `number` |   |
| `createdAt` (Required) | `string (date-time)` |   |
| `updatedAt` (Required) | `string (date-time)` |   |
| `deletedAt` (Required) | `string (date-time)` |   |
| `metaData` (Required) | `object` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

shouldNotBeEmpty

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` |   |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

### Example request

```bash
curl https://api.subrite.no/api/v1/podcast-admin \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "provider": "omny_studio",
  "providerHeaderToken": "<providerHeaderToken>",
  "name": "string",
  "rssFeedUrl": "http://example.com",
  "description": "string",
  "showUrl": "string",
  "isAvailableToAllMembers": true
}'
```

### Example response

201 · `application/json`

```json
{
  "provider": "omny_studio",
  "providerHeaderTokenHint": "string",
  "name": "string",
  "rssFeedUrl": "string",
  "imageUrl": "string",
  "showUrl": "string",
  "description": "string",
  "sortOrder": 0,
  "isAvailableToAllMembers": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z",
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "tenantId": 0,
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="put-api-v1-podcast-admin-bulk-sort-order"></a>
## Bulk update podcast sort orders

`PUT /api/v1/podcast-admin/bulk-sort-order`

**Authentication:** Bearer token (JWT)

### Request body

Content type: `application/json` · Required · `BulkUpdatePodcastSortOrderDto`

| Name | Type | Description |
| --- | --- | --- |
| `podcasts` (Required) | `array of PodcastSortOrderItemDto` | Array of podcast IDs and their new sort orders |
| `podcasts[].id` (Required when parent is present) | `number` | The podcast ID |
| `podcasts[].sortOrder` (Required when parent is present) | `number` | The sort order for the podcast (lower numbers appear first) · `minimum`: `0` |

### Responses

#### 200

Content type: `application/json` · `array of Podcast`

| Name | Type | Description |
| --- | --- | --- |
| `[].provider` (Required when parent is present) | `PodcastProvider` | Allowed values: `"omny_studio"`, `"other"` |
| `[].providerHeaderTokenHint` (Required when parent is present) | `string` | Can be null |
| `[].name` (Required when parent is present) | `string` |   |
| `[].rssFeedUrl` (Required when parent is present) | `string` |   |
| `[].imageUrl` (Required when parent is present) | `string` |   |
| `[].showUrl` (Required when parent is present) | `string` |   |
| `[].description` (Required when parent is present) | `string` |   |
| `[].sortOrder` (Required when parent is present) | `number` |   |
| `[].isAvailableToAllMembers` (Required when parent is present) | `boolean` |   |
| `[].lastSyncedAt` (Required when parent is present) | `string (date-time)` | Can be null |
| `[].tenant` (Required when parent is present) | `Tenant` | Nested fields omitted: field limit. |
| `[].tenantId` (Required when parent is present) | `number` |   |
| `[].id` (Required when parent is present) | `number` |   |
| `[].createdAt` (Required when parent is present) | `string (date-time)` |   |
| `[].updatedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].deletedAt` (Required when parent is present) | `string (date-time)` |   |
| `[].metaData` (Required when parent is present) | `object` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

invalidSortOrder

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

### Example request

```bash
curl https://api.subrite.no/api/v1/podcast-admin/bulk-sort-order \
  --request PUT \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "podcasts": [
    {}
  ]
}'
```

### Example response

200 · `application/json`

```json
[
  {
    "provider": "omny_studio",
    "providerHeaderTokenHint": "string",
    "name": "string",
    "rssFeedUrl": "string",
    "imageUrl": "string",
    "showUrl": "string",
    "description": "string",
    "sortOrder": 0,
    "isAvailableToAllMembers": true,
    "lastSyncedAt": "2019-08-24T14:15:22Z",
    "tenant": {
      "additionalFeatures": [],
      "disabledFeatures": [],
      "taxRates": [],
      "products": [],
      "users": [],
      "members": [],
      "roles": [],
      "subscriptionPlans": [],
      "packages": [],
      "invoices": [],
      "orders": [],
      "paymentProviders": [],
      "newslettersProviderConfig": [],
      "paymentProviderConfigs": [],
      "oidcClients": [],
      "oauthProviders": [],
      "activityLogs": [],
      "m2m_api_clients": [],
      "customProperties": [],
      "consents": [],
      "communicationTemplates": [],
      "additionalHostnames": [],
      "exportHistory": [],
      "arReportHistory": [],
      "mypageCardsSettings": [],
      "webhooks": [],
      "customOrders": [],
      "customOrderSources": [],
      "brandKits": [],
      "communicationReceivers": [],
      "metaData": {}
    },
    "tenantId": 0,
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  }
]
```

<a id="get-api-v1-podcast-admin-id"></a>
## Get a podcast details by ID

`GET /api/v1/podcast-admin/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `Podcast`

Same fields as [Create a new podcast (201)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/{id}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "provider": "omny_studio",
  "providerHeaderTokenHint": "string",
  "name": "string",
  "rssFeedUrl": "string",
  "imageUrl": "string",
  "showUrl": "string",
  "description": "string",
  "sortOrder": 0,
  "isAvailableToAllMembers": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z",
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "tenantId": 0,
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="put-api-v1-podcast-admin-id"></a>
## PodcastAdminController\_updatePodcast\_v1

`PUT /api/v1/podcast-admin/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `multipart/form-data` · Required · `UpdatePodcastDto`

| Name | Type | Description |
| --- | --- | --- |
| `provider` | `PodcastProvider` | Allowed values: `"omny_studio"`, `"other"` |
| `providerHeaderToken` | `string` | Omny Studio header token. Ignored, and cleared, for any other provider. · `maxLength`: `255` |
| `imageUrl` | `string (uri)` | Public URL of a file in the Assets library to use as the podcast image, instead of uploading bytes. The file is referenced rather than copied. |
| `imageFile` | `object` |   |
| `removeOldImage` | `boolean` |   |
| `name` | `string` | `maxLength`: `1024` |
| `rssFeedUrl` | `string (uri)` | `maxLength`: `1024` |
| `description` | `string` | `maxLength`: `5000` |
| `showUrl` | `string` |   |
| `isAvailableToAllMembers` | `boolean` |   |

### Responses

#### 200

Content type: `application/json` · `Podcast`

Same fields as [Create a new podcast (201)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

#### 400

Content type: `application/json` · `ErrorResponse`

invalidRssFeedUrl, badRequest

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"invalidRssFeedUrl"`, `"badRequest"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "invalidRssFeedUrl",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

#### 404

Content type: `application/json` · `ErrorResponse`

contentNotFound

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 413

fileSizeExceeded

#### 415

invalidFileType

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/{id}' \
  --request PUT \
  --header 'Authorization: Bearer <token>' \
  --form 'provider=omny_studio' \
  --form 'providerHeaderToken=providerHeaderToken-value' \
  --form 'imageUrl=http://example.com' \
  --form 'removeOldImage=true' \
  --form 'name=string' \
  --form 'rssFeedUrl=http://example.com' \
  --form 'description=string' \
  --form 'showUrl=string' \
  --form 'isAvailableToAllMembers=true'
```

### Example response

200 · `application/json`

```json
{
  "provider": "omny_studio",
  "providerHeaderTokenHint": "string",
  "name": "string",
  "rssFeedUrl": "string",
  "imageUrl": "string",
  "showUrl": "string",
  "description": "string",
  "sortOrder": 0,
  "isAvailableToAllMembers": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z",
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "tenantId": 0,
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="delete-api-v1-podcast-admin-id"></a>
## Soft delete a podcast

`DELETE /api/v1/podcast-admin/{id}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get a podcast details by ID (400)](https://www.subrite.no/developers/podcast-admin?md=true#get-api-v1-podcast-admin-id).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

#### 404

Content type: `application/json` · `ErrorResponse`

contentNotFound

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/{id}' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```

<a id="put-api-v1-podcast-admin-id-sort-order"></a>
## Update podcast sort order

`PUT /api/v1/podcast-admin/{id}/sort-order`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Request body

Content type: `application/json` · Required · `UpdatePodcastSortOrderDto`

| Name | Type | Description |
| --- | --- | --- |
| `sortOrder` (Required) | `number` | The sort order for the podcast (lower numbers appear first) · `minimum`: `0` |

**Example request body**

`application/json`

```json
{
  "sortOrder": 1
}
```

### Responses

#### 200

Content type: `application/json` · `Podcast`

Same fields as [Create a new podcast (201)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

#### 400

Content type: `application/json` · `ErrorResponse`

invalidSortOrder, badRequest

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"invalidSortOrder"`, `"badRequest"` |
| `message` | `string` |   |
| `errors` (Required) | `array of FieldError` |   |
| `errors[].field` (Required when parent is present) | `string` |   |
| `errors[].fieldValue` (Required when parent is present) | `string` |   |
| `errors[].identifier` (Required when parent is present) | `string` |   |
| `errors[].identifierValue` (Required when parent is present) | `string` |   |
| `errors[].messageCode` (Required when parent is present) | `string` |   |
| `errors[].message` | `string` |   |
| `errors[].errorType` (Required when parent is present) | `string` |   |

**Example response**

`application/json`

```json
{
  "messageCode": "invalidSortOrder",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

#### 404

Content type: `application/json` · `ErrorResponse`

contentNotFound

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/{id}/sort-order' \
  --request PUT \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "sortOrder": 1
}'
```

### Example response

200 · `application/json`

```json
{
  "provider": "omny_studio",
  "providerHeaderTokenHint": "string",
  "name": "string",
  "rssFeedUrl": "string",
  "imageUrl": "string",
  "showUrl": "string",
  "description": "string",
  "sortOrder": 0,
  "isAvailableToAllMembers": true,
  "lastSyncedAt": "2019-08-24T14:15:22Z",
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  },
  "tenantId": 0,
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```

<a id="get-api-v1-podcast-admin-id-products"></a>
## PodcastAdminController\_getProductsByPodcastId\_v1

`GET /api/v1/podcast-admin/{id}/products`

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `id` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `array of ContentProductDto`

| Name | Type | Description |
| --- | --- | --- |
| `[].productId` (Required when parent is present) | `number` |   |
| `[].productName` (Required when parent is present) | `string` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get a podcast details by ID (400)](https://www.subrite.no/developers/podcast-admin?md=true#get-api-v1-podcast-admin-id).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/{id}/products'
```

### Example response

200 · `application/json`

```json
[
  {
    "productId": 0,
    "productName": "string"
  }
]
```

<a id="post-api-v1-podcast-admin-podcastid-products-productid"></a>
## PodcastAdminController\_addProductToPodcast\_v1

`POST /api/v1/podcast-admin/{podcastId}/products/{productId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `podcastId` (Required) | path | `number` |   |
| `productId` (Required) | path | `number` |   |

### Responses

#### 201

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get a podcast details by ID (400)](https://www.subrite.no/developers/podcast-admin?md=true#get-api-v1-podcast-admin-id).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

#### 404

Content type: `application/json` · `ErrorResponse`

contentNotFound

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/{podcastId}/products/{productId}' \
  --request POST \
  --header 'Authorization: Bearer <token>'
```

<a id="delete-api-v1-podcast-admin-podcastid-products-productid"></a>
## PodcastAdminController\_removeProductFromPodcast\_v1

`DELETE /api/v1/podcast-admin/{podcastId}/products/{productId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `podcastId` (Required) | path | `number` |   |
| `productId` (Required) | path | `number` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get a podcast details by ID (400)](https://www.subrite.no/developers/podcast-admin?md=true#get-api-v1-podcast-admin-id).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

#### 404

Content type: `application/json` · `ErrorResponse`

contentNotFound

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/{podcastId}/products/{productId}' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```

<a id="get-api-v1-podcast-admin-spotify-setup"></a>
## Get Spotify partner integration details

`GET /api/v1/podcast-admin/spotify-setup`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

Content type: `application/json` · `SpotifyPartner`

| Name | Type | Description |
| --- | --- | --- |
| `spotifyPartnerId` (Required) | `string` |   |
| `sandbox` (Required) | `boolean` |   |
| `createdAt` (Required) | `string (date-time)` |   |
| `updatedAt` (Required) | `string (date-time)` |   |
| `deletedAt` (Required) | `string (date-time)` |   |
| `tenantId` (Required) | `number` |   |
| `tenant` (Required) | `Tenant` |   |
| `tenant.market` (Required) | `string` | Operating market of the tenant (immutable post-install). · Allowed values: `"NO"`, `"SE"`, `"DK"` |
| `tenant.productName` | `string` | The product name of the tenant · Allowed values: `"enterprise"`, `"communication"`, `"custom"` |
| `tenant.additionalFeatures` | `array of string` | The additional features of the tenant · Allowed values: `"email"`, `"sms"`, `"push"`, `"podcasts"`, `"subscription"`, `"insights"`, `"dashboard"`, `"automation"`, `"export"`, `"accounting"`, `"invoices"`, `"ai"` |
| `tenant.disabledFeatures` | `array of string` | The disabled features of the tenant · Allowed values: `"email"`, `"sms"`, `"push"`, `"podcasts"`, `"subscription"`, `"insights"`, `"dashboard"`, `"automation"`, `"export"`, `"accounting"`, `"invoices"`, `"ai"` |
| `tenant.name` (Required) | `string` |   |
| `tenant.isActive` (Required) | `boolean` |   |
| `tenant.defaultLanguage` (Required) | `string` | Allowed values: `"en"`, `"no"`, `"sv"`, `"da"` |
| `tenant.hostName` (Required) | `string` |   |
| `tenant.logo` (Required) | `string` |   |
| `tenant.favicon` (Required) | `string` |   |
| `tenant.authLogo` (Required) | `string` |   |
| `tenant.authLogoHeight` (Required) | `number` |   |
| `tenant.siteUrl` (Required) | `string` |   |
| `tenant.termsUrl` (Required) | `string` |   |
| `tenant.privacyUrl` (Required) | `string` |   |
| `tenant.gtm` (Required) | `string` |   |
| `tenant.taxRates` | `array of number` |   |
| `tenant.smsOtp` (Required) | `boolean` |   |
| `tenant.emailProvider` (Required) | `string` | Allowed values: `"brevo"`, `"sendgrid"` |
| `tenant.tenantContact` (Required) | `string` |   |
| `tenant.registeredBusinessNo` (Required) | `string` |   |
| `tenant.bankAccountNo` (Required) | `string` |   |
| `tenant.swiftCode` (Required) | `string` |   |
| `tenant.iban` (Required) | `string` |   |
| `tenant.defaultLogoutURL` (Required) | `string` |   |
| `tenant.postalAddress` (Required) | `string` |   |
| `tenant.otpTemplateId` | `Translation` |   |
| `tenant.otpTemplateId.en` (Required when parent is present) | `string` |   |
| `tenant.otpTemplateId.no` (Required when parent is present) | `string` |   |
| `tenant.otpTemplateId.sv` | `string` |   |
| `tenant.otpTemplateId.da` | `string` |   |
| `tenant.otpTemplateId.key` | `string` |   |
| `tenant.smsSenderId` (Required) | `number` |   |
| `tenant.emailSenderId` (Required) | `number` |   |
| `tenant.smsSender` (Required) | `CommunicationSender` | Nested fields omitted: field limit. |
| `tenant.emailSender` (Required) | `CommunicationSender` | Nested fields omitted: field limit. |
| `tenant.products` (Required) | `array of Product` | Nested fields omitted: field limit. |
| `tenant.users` (Required) | `array of User` | Nested fields omitted: field limit. |
| `tenant.members` (Required) | `array of Member` | Nested fields omitted: field limit. |
| `tenant.roles` (Required) | `array of Role` | Nested fields omitted: field limit. |
| `tenant.subscriptionPlans` (Required) | `array of SubscriptionPlan` | Nested fields omitted: field limit. |
| `tenant.packages` (Required) | `array of Package` | Nested fields omitted: field limit. |
| `tenant.invoices` (Required) | `array of Invoice` | Nested fields omitted: field limit. |
| `tenant.orders` (Required) | `array of Order` | Nested fields omitted: field limit. |
| `tenant.paymentProviders` (Required) | `array of PaymentProviderConfig` | Nested fields omitted: field limit. |
| `tenant.newslettersProviderConfig` (Required) | `array of NewsletterProviderConfig` | Nested fields omitted: field limit. |
| `tenant.paymentProviderConfigs` (Required) | `array of PaymentProviderConfig` | Nested fields omitted: field limit. |
| `tenant.oidcClients` (Required) | `array of OidcClient` | Nested fields omitted: field limit. |
| `tenant.oauthProviders` (Required) | `array of OauthProvider` | Nested fields omitted: field limit. |
| `tenant.activityLogs` (Required) | `array of ActivityLog` | Nested fields omitted: field limit. |
| `tenant.m2m_api_clients` (Required) | `array of M2MApiClient` | Nested fields omitted: field limit. |
| `tenant.customProperties` (Required) | `array of CustomProperty` | Nested fields omitted: field limit. |
| `tenant.consents` (Required) | `array of Consent` | Nested fields omitted: field limit. |
| `tenant.preference` (Required) | `Preference` | Nested fields omitted: field limit. |
| `tenant.settings` (Required) | `TenantSettings` | Nested fields omitted: field limit. |
| `tenant.communicationTemplates` (Required) | `array of CommunicationTemplate` | Nested fields omitted: field limit. |
| `tenant.additionalHostnames` (Required) | `array of TenantHostname` | Nested fields omitted: field limit. |
| `tenant.exportHistory` (Required) | `array of ExportHistory` | Nested fields omitted: field limit. |
| `tenant.arReportHistory` (Required) | `array of ArReportHistory` | Nested fields omitted: field limit. |
| `tenant.mypageCardsSettings` (Required) | `array of MypageCardsSettings` | Nested fields omitted: field limit. |
| `tenant.webhooks` (Required) | `array of Webhook` | Nested fields omitted: field limit. |
| `tenant.customOrders` (Required) | `array of CustomOrder` | Nested fields omitted: field limit. |
| `tenant.customOrderSources` (Required) | `array of CustomOrderSource` | Nested fields omitted: field limit. |
| `tenant.brandKits` (Required) | `array of BrandKit` | Nested fields omitted: field limit. |
| `tenant.communicationReceivers` (Required) | `array of CommunicationReceiver` | Nested fields omitted: field limit. |
| `tenant.id` (Required) | `number` |   |
| `tenant.createdAt` (Required) | `string (date-time)` |   |
| `tenant.updatedAt` (Required) | `string (date-time)` |   |
| `tenant.deletedAt` (Required) | `string (date-time)` |   |
| `tenant.metaData` (Required) | `object` |   |

#### 401

unauthorized

### Example request

```bash
curl https://api.subrite.no/api/v1/podcast-admin/spotify-setup \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "spotifyPartnerId": "string",
  "sandbox": true,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "tenantId": 0,
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  }
}
```

<a id="post-api-v1-podcast-admin-spotify-setup"></a>
## Set up Spotify partner integration

`POST /api/v1/podcast-admin/spotify-setup`

**Authentication:** Bearer token (JWT)

### Responses

#### 201

Content type: `application/json` · `SpotifyPartner`

Same fields as [Get Spotify partner integration details (200)](https://www.subrite.no/developers/podcast-admin?md=true#get-api-v1-podcast-admin-spotify-setup).

#### 400

Content type: `application/json` · `ErrorResponse`

invalidSpotifyCredentials

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

### Example request

```bash
curl https://api.subrite.no/api/v1/podcast-admin/spotify-setup \
  --request POST \
  --header 'Authorization: Bearer <token>'
```

### Example response

201 · `application/json`

```json
{
  "spotifyPartnerId": "string",
  "sandbox": true,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "tenantId": 0,
  "tenant": {
    "market": "NO",
    "productName": "enterprise",
    "additionalFeatures": [],
    "disabledFeatures": [],
    "name": "string",
    "isActive": true,
    "defaultLanguage": "en",
    "hostName": "string",
    "logo": "string",
    "favicon": "string",
    "authLogo": "string",
    "authLogoHeight": 0,
    "siteUrl": "string",
    "termsUrl": "string",
    "privacyUrl": "string",
    "gtm": "string",
    "taxRates": [],
    "smsOtp": true,
    "emailProvider": "brevo",
    "tenantContact": "string",
    "registeredBusinessNo": "string",
    "bankAccountNo": "string",
    "swiftCode": "string",
    "iban": "<iban>",
    "defaultLogoutURL": "string",
    "postalAddress": "<postalAddress>",
    "otpTemplateId": {},
    "smsSenderId": 0,
    "emailSenderId": 0,
    "smsSender": {
      "metaData": {}
    },
    "emailSender": {
      "metaData": {}
    },
    "products": [],
    "users": [],
    "members": [],
    "roles": [],
    "subscriptionPlans": [],
    "packages": [],
    "invoices": [],
    "orders": [],
    "paymentProviders": [],
    "newslettersProviderConfig": [],
    "paymentProviderConfigs": [],
    "oidcClients": [],
    "oauthProviders": [],
    "activityLogs": [],
    "m2m_api_clients": [],
    "customProperties": [],
    "consents": [],
    "preference": {
      "inputFieldConfig": [],
      "customFieldsOnMemberCard": [],
      "customFieldsOnInvoice": [],
      "visibleAdditionalFieldsOnMypage": [],
      "metaData": {}
    },
    "settings": {
      "aiResidency": {},
      "metaData": {}
    },
    "communicationTemplates": [],
    "additionalHostnames": [],
    "exportHistory": [],
    "arReportHistory": [],
    "mypageCardsSettings": [],
    "webhooks": [],
    "customOrders": [],
    "customOrderSources": [],
    "brandKits": [],
    "communicationReceivers": [],
    "id": 0,
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "deletedAt": "2019-08-24T14:15:22Z",
    "metaData": {}
  }
}
```

<a id="get-api-v1-podcast-admin-spotify-url-podcastid"></a>
## PodcastAdminController\_getSpotifyFeed\_v1

`GET /api/v1/podcast-admin/spotify-url/{podcastId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `podcastId` (Required) | path | `number` |   |

### Responses

#### 200

Content type: `application/json` · `FeedSpotifyResponseDto`

| Name | Type | Description |
| --- | --- | --- |
| `signature` (Required) | `string` |   |

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get a podcast details by ID (400)](https://www.subrite.no/developers/podcast-admin?md=true#get-api-v1-podcast-admin-id).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

#### 404

Content type: `application/json` · `ErrorResponse`

Tenant ID not found

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/spotify-url/{podcastId}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "signature": "<signature>"
}
```

<a id="delete-api-v1-podcast-admin-spotify-unlink-memberid"></a>
## Unlink a member from their Spotify account

`DELETE /api/v1/podcast-admin/spotify-unlink/{memberId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `memberId` (Required) | path | `string` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

Failed to unlink Spotify account

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

#### 404

Content type: `application/json` · `ErrorResponse`

No Spotify account linked to unlink

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/spotify-unlink/{memberId}' \
  --request DELETE \
  --header 'Authorization: Bearer <token>'
```

<a id="get-api-v1-podcast-admin-spotify-link-status-memberid"></a>
## Get Spotify link status for a specific member

`GET /api/v1/podcast-admin/spotify-link-status/{memberId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `memberId` (Required) | path | `string` |   |

### Responses

#### 200

Content type: `application/json` · `SpotifyLinkStatusDto`

| Name | Type | Description |
| --- | --- | --- |
| `isLinked` (Required) | `boolean` | Whether the user has a linked Spotify account |
| `partnerUserId` | `string` | Spotify partner user ID if linked |
| `entitlements` | `array of string` | Current entitlements from Spotify |
| `lastUpdated` | `string (date-time)` | Last updated timestamp |
| `hasLocalRecord` | `boolean` | Whether a local SpotifyUser record exists (may differ from isLinked if Spotify API reports broken link) |

#### 400

Content type: `application/json` · `ErrorResponse`

Failed to get Spotify link status

Same fields as [Create a new podcast (400)](https://www.subrite.no/developers/podcast-admin?md=true#post-api-v1-podcast-admin).

**Example response**

`application/json`

```json
{
  "messageCode": "string",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/spotify-link-status/{memberId}' \
  --header 'Authorization: Bearer <token>'
```

### Example response

200 · `application/json`

```json
{
  "isLinked": true,
  "partnerUserId": "string",
  "entitlements": [
    "string"
  ],
  "lastUpdated": "2019-08-24T14:15:22Z",
  "hasLocalRecord": true
}
```

<a id="get-api-v1-podcast-admin-podcast-feed-podcastid"></a>
## PodcastAdminController\_getPodcastFeed\_v1

`GET /api/v1/podcast-admin/podcast-feed/{podcastId}`

**Authentication:** Bearer token (JWT)

### Parameters

| Name | In | Type | Description |
| --- | --- | --- | --- |
| `podcastId` (Required) | path | `number` |   |

### Responses

#### 200

#### 400

Content type: `application/json` · `ErrorResponse`

badRequest

Same fields as [Get a podcast details by ID (400)](https://www.subrite.no/developers/podcast-admin?md=true#get-api-v1-podcast-admin-id).

**Example response**

`application/json`

```json
{
  "messageCode": "badRequest",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 401

unauthorized

### Example request

```bash
curl 'https://api.subrite.no/api/v1/podcast-admin/podcast-feed/{podcastId}' \
  --header 'Authorization: Bearer <token>'
```
