# TenantSettings

**Summary:** Endpoints for TenantSettings

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

<a id="get-api-v1-tenant-settings"></a>
## Get the current tenant settings

`GET /api/v1/tenant-settings`

**Authentication:** Bearer token (JWT)

### Responses

#### 200

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

| Name | Type | Description |
| --- | --- | --- |
| `kilkayaEnabled` (Required) | `boolean` |   |
| `kilkayaHost` (Required) | `string` | Can be null |
| `kilkayaCustomerId` (Required) | `string` | Can be null |
| `discardTopicsInPushNotifications` (Required) | `boolean` |   |
| `aiResidency` (Required) | `object` |   |
| `isOnboarding` (Required) | `boolean` |   |
| `wentLiveAt` (Required) | `string (date-time)` | Can be null |
| `emailOtpEnabled` (Required) | `boolean` |   |
| `smsOtpEnabled` (Required) | `boolean` |   |
| `smsOtpFallbackEnabled` (Required) | `boolean` |   |
| `primaryOtpChannel` (Required) | `string` | Allowed values: `"email"`, `"sms"` |
| `diEnabled` (Required) | `boolean` |   |
| `diCustomerSystem` (Required) | `string` | Can be null |
| `tenantId` (Required) | `number` |   |
| `tenant` (Required) | `Tenant` | Nested fields omitted: field limit. |
| `id` (Required) | `number` |   |
| `createdAt` (Required) | `string (date-time)` |   |
| `updatedAt` (Required) | `string (date-time)` |   |
| `deletedAt` (Required) | `string (date-time)` |   |
| `metaData` (Required) | `object` |   |

#### 401

unauthorized

#### 403

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

forbiddenResource

| 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": [
    {}
  ]
}
```

#### 404

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

tenantSettingsNotFound

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"tenantSettingsNotFound"` |
| `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": "tenantSettingsNotFound",
  "message": "string",
  "errors": [
    {}
  ]
}
```

#### 500

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

internalServerError

Same fields as [Get the current tenant settings (403)](https://www.subrite.no/developers/tenant-settings?md=true#get-api-v1-tenant-settings).

### Example request

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

### Example response

200 · `application/json`

```json
{
  "kilkayaEnabled": true,
  "kilkayaHost": "string",
  "kilkayaCustomerId": "string",
  "discardTopicsInPushNotifications": true,
  "aiResidency": {},
  "isOnboarding": true,
  "wentLiveAt": "2019-08-24T14:15:22Z",
  "emailOtpEnabled": true,
  "smsOtpEnabled": true,
  "smsOtpFallbackEnabled": true,
  "primaryOtpChannel": "email",
  "diEnabled": true,
  "diCustomerSystem": "string",
  "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": {}
  },
  "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-tenant-settings"></a>
## Upsert the current tenant settings

`PUT /api/v1/tenant-settings`

**Authentication:** Bearer token (JWT)

### Request body

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

| Name | Type | Description |
| --- | --- | --- |
| `kilkayaEnabled` | `boolean` | Whether the Kilkaya analytics integration is enabled. |
| `kilkayaHost` | `string` | Kilkaya ingestion host — a bare hostname such as cl.k5a.io, with no scheme, port, path or query. Required when kilkayaEnabled is true. · `pattern`: `/^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i` |
| `kilkayaCustomerId` | `string` | 24-character hex Kilkaya customer ID. Required when kilkayaEnabled is true. · `pattern`: `/^[a-f0-9]{24}$/` |
| `discardTopicsInPushNotifications` | `boolean` | When true, push notifications ignore the topics they were sent with and reach every subscribed device for the tenant. Defaults to false. |
| `diEnabled` | `boolean` | Whether the tenant delivers printed copies through Distribution Innovation (DI). Turning it off hides the distribution pages and fields but keeps every stored DI value. |
| `diCustomerSystem` | `string` | The code DI gave the tenant's system, up to 5 letters or digits. Null clears it. · `pattern`: `/^[A-Za-z0-9]{1,5}$/` · Can be null |

**Example request body**

`application/json`

```json
{
  "kilkayaEnabled": true,
  "kilkayaHost": "string",
  "kilkayaCustomerId": "string",
  "discardTopicsInPushNotifications": true,
  "diEnabled": true,
  "diCustomerSystem": "ABC"
}
```

### Responses

#### 200

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

Same fields as [Get the current tenant settings (200)](https://www.subrite.no/developers/tenant-settings?md=true#get-api-v1-tenant-settings).

#### 400

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

Body validation failed, or Kilkaya is enabled without a host and customer id

| Name | Type | Description |
| --- | --- | --- |
| `messageCode` (Required) | `string` | Allowed values: `"badRequest"`, `"kilkayaConfigIncomplete"` |
| `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

#### 403

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

forbiddenResource

Same fields as [Get the current tenant settings (403)](https://www.subrite.no/developers/tenant-settings?md=true#get-api-v1-tenant-settings).

**Example response**

`application/json`

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

#### 500

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

internalServerError

Same fields as [Get the current tenant settings (403)](https://www.subrite.no/developers/tenant-settings?md=true#get-api-v1-tenant-settings).

### Example request

```bash
curl https://api.subrite.no/api/v1/tenant-settings \
  --request PUT \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "kilkayaEnabled": true,
  "kilkayaHost": "string",
  "kilkayaCustomerId": "string",
  "discardTopicsInPushNotifications": true,
  "diEnabled": true,
  "diCustomerSystem": "ABC"
}'
```

### Example response

200 · `application/json`

```json
{
  "kilkayaEnabled": true,
  "kilkayaHost": "string",
  "kilkayaCustomerId": "string",
  "discardTopicsInPushNotifications": true,
  "aiResidency": {},
  "isOnboarding": true,
  "wentLiveAt": "2019-08-24T14:15:22Z",
  "emailOtpEnabled": true,
  "smsOtpEnabled": true,
  "smsOtpFallbackEnabled": true,
  "primaryOtpChannel": "email",
  "diEnabled": true,
  "diCustomerSystem": "string",
  "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": {}
  },
  "id": 0,
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z",
  "deletedAt": "2019-08-24T14:15:22Z",
  "metaData": {}
}
```
