---
title: "Get Tenant Full Preference"
method: GET
path: "/v1/tenant/{tenant_id}/preference/"
---

# Get Tenant Full Preference

`GET /v1/tenant/{tenant_id}/preference/`

API to fetch tenant preferences across all categories with translated names and descriptions.

## Path parameters

- `tenant_id` string, required

## Query parameters

- `locale` string

## Response `200`

200

- object
  - `root_categories` object[]
    - `root_category` 'system' | 'transactional' | 'promotional' — Root category (system, transactional, or promotional) this sub-category belongs to.
    - `sections` object[]
      - `name` string, nullable
      - `slug` string, nullable
      - `description` string, nullable
      - `tags` string[], nullable
      - `categories` object[]
        - `name` string
        - `category` string
        - `description` string, nullable
        - `tags` string[], nullable
        - `effective_tags` string[], nullable
        - `default_preference` 'opt_in' | 'opt_out' | 'cant_unsubscribe' — Category-level default preference, inherited when the tenant has not overridden it.
        - `default_mandatory_channels` string[], nullable — Category-level mandatory channels (applies when the default preference is `cant_unsubscribe`).
        - `default_opt_in_channels` string[], nullable — Category-level opt-in channels, used when only selective channels are opted in by default.
        - `enabled_for_tenant` boolean — Whether the category is enabled for this tenant. When false, the category is hidden from the tenant's users and notifications are not sent in it.
        - `visible_to_subscriber` boolean — Whether the category appears on the tenant users' preference page.
        - `preference` 'opt_in' | 'opt_out' | 'cant_unsubscribe', nullable — Tenant's overridden preference for this category. `null` if the tenant has not overridden the category default.
        - `mandatory_channels` string[], nullable — Channels the user cannot unsubscribe from (when preference is `cant_unsubscribe`), as overridden for this tenant.
        - `opt_in_channels` string[], nullable — Channels opted in by default for this category, as overridden for this tenant.
        - `blocked_channels` string[], nullable — Channels opted out across all categories for this tenant.
        - `updated_at` string, date-time, nullable — Timestamp when the tenant preference for this category was last updated.
        - `digest_schedule` object, nullable — Digest schedule configuration with tenant overrides and original options
          - `options` object[] — Tenant-modified digest schedule options (merged with original options by id)
            - `id` string — Unique identifier of the digest schedule option.
            - `label` string — Display label shown to the recipient.
            - `frequency` string — Frequency of the digest schedule (instantly, hourly, daily, weekly, weekly_mo2fr, monthly).
            - `interval` integer — Recurrence multiplier for the frequency (for example, every 2 weeks).
            - `time` object — Time of day to send the digest, with its edit policy and value.
              - …
            - `weekdays` object — Days of the week to send on (for weekly frequency), with edit policy and value.
              - …
            - `monthdays` object — Days of the month to send on (for monthly frequency), with edit policy and value.
              - …
            - `dtstart` object — Start datetime from which the recurring schedule is calculated, with edit policy and value.
              - …
            - `is_default` boolean — Whether this option is the default selection.
          - `original_options` object[] — Original digest schedule options as configured at the category level
            - `id` string — Unique identifier of the digest schedule option.
            - `label` string — Display label shown to the recipient.
            - `frequency` string — Frequency of the digest schedule (instantly, hourly, daily, weekly, weekly_mo2fr, monthly).
            - `interval` integer — Recurrence multiplier for the frequency (for example, every 2 weeks).
            - `time` object — Time of day to send the digest, with its edit policy and value.
              - …
            - `weekdays` object — Days of the week to send on (for weekly frequency), with edit policy and value.
              - …
            - `monthdays` object — Days of the month to send on (for monthly frequency), with edit policy and value.
              - …
            - `dtstart` object — Start datetime from which the recurring schedule is calculated, with edit policy and value.
              - …
            - `is_default` boolean — Whether this option is the default selection.
        - `properties` object[], nullable — Category condition properties with tenant overrides
          - `key` string — Property key identifier, referenced in workflows as `$category.properties.<key>`.
          - `label` string — Display label shown to the recipient.
          - `value_type` string — Data type of the property value.
          - `default_value` string — Default value applied when not overridden.
          - `is_optional` boolean — Whether this property is optional.
          - `edit_policy` 'locked' | 'editable' — `editable` means the value can be overridden; `locked` means it is fixed.
          - `is_overridden` boolean — Whether the tenant has overridden the default value
          - `value` unknown

## Other responses

- `404` — 404

---

[API](https://skmtc.net/suprsend/apis/suprsend-api.md) · [All operations](https://skmtc.net/suprsend/apis/suprsend-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/suprsend/suprsend-api/versions/8bd2574bd2c3/schema)
