# Types

Objecttypes zijn de schemahelft van de Objecten-module. Haal ze op om te leren welke contenttypes er voor de winkel bestaan en welke vorm hun records hebben. Zie de [Objecten-conceptpagina](./index) voor de volledige referentie van propertytypes, inclusief publiceren, adressen en gelokaliseerde waarden.

## GET /v1/api/objects/types

Toont alle objecttypes met hun actieve (niet-gearchiveerde) propertydefinities, gesorteerd op typenaam. De lijst is niet gepagineerd; de response is een kale `data`-array. Vereist de scope `objects:read`.

Geen parameters.

```bash title="Request"
curl https://api.borkol.com/v1/api/objects/types \
  -H "Authorization: Bearer {api_key}"
```

```javascript title="Request (JS)"
const res = await fetch("https://api.borkol.com/v1/api/objects/types", {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data: types } = await res.json();
```

Status: `200 OK`. Elk type bevat:

| Veld | Type | Beschrijving |
| --- | --- | --- |
| `name` | string | Enkelvoudige weergavenaam. |
| `plural_name` | string | Meervoudige weergavenaam. |
| `key` | string | Unieke slug. Gebruik die in `GET /v1/api/objects/types/{key}/records`. |
| `settings` | object | `{publishable, slug?}`. `publishable` is `true` wanneer records van dit type concepten zijn tot ze worden gepubliceerd; `slug` (`{source, prefixes}`) is alleen aanwezig wanneer records adressen hebben. Zie de [Objecten-conceptpagina](./index#objecttypes-en-properties). |
| `properties` | array | Actieve propertydefinities, elk `{key, label, type, options, localized, config, is_required, position}`. Gearchiveerde properties worden weggelaten. `localized` zegt dat de waarde een map per taal is; `config` bevat de repeatervelden of de toegestane recordtypes voor verwijzingssoorten, en is anders `null`. |

```json title="Response"
{
  "data": [
    {
      "name": "FAQ",
      "plural_name": "FAQs",
      "key": "faq",
      "settings": {
        "publishable": true,
        "slug": {
          "source": "name",
          "prefixes": { "en": "/faq", "nl": "/veelgestelde-vragen" }
        }
      },
      "properties": [
        {
          "key": "name",
          "label": "Name",
          "type": "text",
          "options": null,
          "localized": true,
          "config": null,
          "is_required": true,
          "position": 0
        },
        {
          "key": "answer",
          "label": "Answer",
          "type": "textarea",
          "options": null,
          "localized": true,
          "config": null,
          "is_required": true,
          "position": 1
        },
        {
          "key": "category",
          "label": "Category",
          "type": "select",
          "options": ["shipping", "returns", "payment"],
          "localized": false,
          "config": null,
          "is_required": false,
          "position": 2
        },
        {
          "key": "steps",
          "label": "Steps",
          "type": "repeater",
          "options": null,
          "localized": false,
          "config": {
            "fields": [
              { "key": "text", "label": "Text", "kind": "text", "required": true, "localized": true, "config": {} }
            ],
            "item_label_field": "text"
          },
          "is_required": false,
          "position": 3
        }
      ]
    }
  ]
}
```

### Fouten

- `403` `{"error":"Module not enabled: objects"}` wanneer de Objecten-module is uitgeschakeld.
- `403` `{"message":"Invalid ability provided."}` wanneer de API-key de scope `objects:read` mist.
