# Get all translation types

`GET /api/translation-types`

- **Success:** `200 OK`
- **Products:** Operator (`FOH`)
- **Features:** Front of House Generic Access (`FOHGENERIC`)

HTML version: [Get all translation types](https://support.gladstonesoftware.cloud/reference/configuration/get-all-translation-types)

## Overview

Lists the translation types available to your tenant. A *translation type* names a kind of record that can carry localised text — `Site`, `Activity`, `MembershipType`, `PriceLevel` and so on — and every translated string in the platform is filed against exactly one of them.

Call this first when you are working with translations. The translation import, export and bulk-modify endpoints all identify the records they act on by translation type name, and the names they accept are precisely the `type` values returned here. Lookup is case-insensitive, but the name must be one of these.

The response body is a **JSON array** of translation type objects. The fields below are listed without a `[]` prefix, but each describes an element of that array.

This list is platform-maintained rather than operator-maintained. Gladstone maintains it, so the same set of type names is present on every tenant. `id`, by contrast, is assigned per tenant, so **key your integration off `type`, not `id`** — the numbers are not guaranteed to agree between tenants or between environments.

Translation types have no active/inactive or status flag and nothing is filtered, so every configured type is returned whether or not your operator uses it. No sort order is applied either, so do not depend on the order entries arrive in.

Three flags held on each translation type — `hasName`, `userMaintainable` and `hasWebComments` — are **not** returned by this endpoint. They matter because they determine the column count of the CSV used by [Export a file containing translations](export-a-file-containing-translations.md) and [Import a file containing translations](import-a-file-containing-translations.md). You cannot discover them from this API; export a file first and read the header row instead.

When there are no translation types to return the endpoint responds `404` with a plain-text body, not `200` with an empty array.

A type added by a platform release may not appear immediately.

## Endpoint

`GET {base_url}/api/translation-types`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Sample request

```bash title="cURL"
curl -X GET '{base_url}/api/translation-types' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | integer (int32) | The translation type's numeric identifier, and the value to pass as `translationTypeId` to [Get translation type by ID](get-translation-type-by-id.md). Assigned per tenant, so it can differ between tenants and environments — use `type` as your stable key and treat `id` as valid only within the tenant that returned it. |
| `type` | string | The name of the translation type, and the identifier the translation import, export and bulk-modify endpoints expect. Always present, at most 50 characters, and unique within the tenant. Standard values include `Site`, `SiteGroup`, `Activity`, `ActivityGroup`, `Product`, `ResourceProduct`, `MembershipType`, `PriceLevel`, `TimeBand`, `TaxCode`, `Tag`, `TagGroup`, `Gender`, `Title`, `Status`, `DocumentType`, `UserField`, `UserFieldOption` and `Consumer`. The translation export endpoint requires this value in its `translationType` field, and matching there is case-insensitive. |
| `description` | string | A short English label for the type, intended for display in a picker — for example `Activity Groups` for type `ActivityGroup`. At most 512 characters. It can be null, but it is set for every standard type, so in practice it is populated. It is not localised; localised labels, where an operator has configured any, arrive in `translations`. |
| `translations` | array of object | Localised labels for this translation type record itself — that is, translations of the type's own display text, not the translations belonging to records of this type. Returned as an empty array, never `null`, when none are configured. To read the translations of the records themselves, pass this entry's `type` as the `translationType` of [Export a file containing translations](export-a-file-containing-translations.md). |
| `translations[].culture` | string | The culture the text applies to, as a code drawn from the tenant's configured culture list — see [Get all available cultures](get-all-available-cultures.md). At most 20 characters, and always a code from that list, so an arbitrary BCP 47 tag is not necessarily valid here. |
| `translations[].type` | string | Despite the name, this is **not** a translation type. It is the name of the property on the record that this text replaces, so a record with several translatable properties produces one entry per property per culture. At most 50 characters. |
| `translations[].text` | string | The localised text itself, replacing the named property for the named culture. Unbounded in length here, but when writing translations a 255-character limit is enforced and exceeding it is rejected. |
| `translations[].language` | string | Always `null` on this endpoint. The 20-character limit applies when writing translations through the bulk-modify and import endpoints, where an empty string is coerced to `null` before processing. |

## Sample response

```json title="200 OK"
[
  {
    "id": 25,
    "type": "ActivityGroup",
    "description": "Activity Groups",
    "translations": []
  },
  {
    "id": 26,
    "type": "Site",
    "description": "Sites",
    "translations": [
      {
        "culture": "cy-GB",
        "type": "Description",
        "text": "<the localised label>",
        "language": null
      }
    ]
  }
]
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `404` | Not found | The translation type list came back empty. The body is the plain-text string `GetAllTranslationTypes called successfully but returned no data`, not JSON. Because Gladstone provides the list, this should not occur on a correctly provisioned tenant — treat it as a configuration fault rather than as "no results". |
| `500` | Internal server error | Any unexpected server-side failure while reading the list. The response has **no body**, so there is nothing to parse and nothing that distinguishes one cause from another. |
