# Profiel

Beide profiel-endpoints zijn contact-geauthenticeerd: ze vereisen de tenant-API-key in `Authorization` en een geldig contactsessietoken in `X-Customer-Token`. Lezen vereist de `contacts:read` scope, bijwerken vereist `contacts:write` (`customers:read` / `customers:write` geaccepteerd).

## GET /v1/api/contacts/me

Ook aangeboden op `/v1/api/customers/me` voor bestaande integraties; identiek request en response.

Haal het profiel van het geauthenticeerde contact op.

### Headers

| Naam | Type | Verplicht | Beschrijving |
| --- | --- | --- | --- |
| `X-Customer-Token` | string | Ja | Contactsessietoken van register of login. |

Geen query- of body-parameters.

```bash title="Request"
curl https://api.borkol.com/v1/api/contacts/me \
  -H "Authorization: Bearer {api_key}" \
  -H "X-Customer-Token: 13|Gh7rS2uX5vWy8zAbCdEfGhIjKlMnOpQrStUvWxYz"
```

Status: `200 OK`.

```json title="Response"
{
  "data": {
    "id": "9d4e2f1a-6b3c-4f8e-9a1d-2c5b7e8f0a3d",
    "name": "Jane Doe",
    "email": "jane@example.com",
    "phone": "+31612345678",
    "kind": "person",
    "company_name": null,
    "registration_number": null,
    "vat_id": null,
    "external_id": null,
    "display_name": "Jane Doe",
    "created_at": "2026-08-14T10:32:11+00:00"
  }
}
```

Een contact dat door de handelaar als bedrijf is aangemaakt (via het klantdashboard of CSV-import) ziet er zo uit:

```json title="Response (zakelijk contact)"
{
  "data": {
    "id": "c2d3e4f5-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
    "name": "Mark van Dijk",
    "email": null,
    "phone": "+31201234567",
    "kind": "company",
    "company_name": "Van Dijk Bouw B.V.",
    "registration_number": "34567890",
    "vat_id": "NL123456789B01",
    "external_id": "erp-4471",
    "display_name": "Van Dijk Bouw B.V.",
    "created_at": "2026-08-20T09:00:00+00:00"
  }
}
```

### Fouten

- `401` `{"message":"Invalid customer token."}` wanneer `X-Customer-Token` ontbreekt of ongeldig is.

## PATCH /v1/api/contacts/me

Ook aangeboden op `/v1/api/customers/me` voor bestaande integraties; identiek request en response.

Werk het profiel van het geauthenticeerde contact bij. Dit is een partiële update: alle body-velden zijn optioneel en alleen de velden die je stuurt worden gewijzigd. Het wijzigen van het e-mailadres van een niet-gast account vereist het huidige wachtwoord van het account in `current_password`. `kind`, `company_name`, `registration_number`, `vat_id` en `external_id` worden op dit endpoint niet geaccepteerd — ze zijn alleen-lezen via de storefront API en worden door de handelaar ingesteld.

### Headers

| Naam | Type | Verplicht | Beschrijving |
| --- | --- | --- | --- |
| `X-Customer-Token` | string | Ja | Contactsessietoken van register of login. |

### Body-parameters

| Naam | Type | Verplicht | Beschrijving |
| --- | --- | --- | --- |
| `name` | string | Nee | Volledige naam. Maximaal 150 tekens. |
| `email` | string | Nee | Geldig e-mailadres, maximaal 255 tekens. Server-side naar lowercase omgezet. Mag niet bij een ander contact horen. Wijzigen op een niet-gast account vereist `current_password`. |
| `phone` | string of null | Nee | Telefoonnummer, maximaal 50 tekens. Stuur `null` om te wissen. |
| `current_password` | string | Nee | Alleen vereist bij het wijzigen van `email` op een niet-gast account. Wordt nooit opgeslagen; alleen gecontroleerd. |

```bash title="Request"
curl -X PATCH https://api.borkol.com/v1/api/contacts/me \
  -H "Authorization: Bearer {api_key}" \
  -H "X-Customer-Token: 13|Gh7rS2uX5vWy8zAbCdEfGhIjKlMnOpQrStUvWxYz" \
  -H "Content-Type: application/json" \
  -d '{"name":"Jane A. Doe","phone":"+31612345678"}'
```

Status: `200 OK`. Retourneert het bijgewerkte contact.

```json title="Response"
{
  "data": {
    "id": "9d4e2f1a-6b3c-4f8e-9a1d-2c5b7e8f0a3d",
    "name": "Jane A. Doe",
    "email": "jane@example.com",
    "phone": "+31612345678",
    "kind": "person",
    "company_name": null,
    "registration_number": null,
    "vat_id": null,
    "external_id": null,
    "display_name": "Jane A. Doe",
    "created_at": "2026-08-14T10:32:11+00:00"
  }
}
```

### Fouten

- `422` met `errors.current_password` `["Current password is required to change email."]` bij het wijzigen van het e-mailadres van een niet-gast account zonder `current_password`, of met een verkeerd wachtwoord.
- `422` met `errors.email` `["Email already registered."]` wanneer het nieuwe e-mailadres bij een ander contact hoort.
- `422` bij veldvalidatiefouten.
- `401` `{"message":"Invalid customer token."}` wanneer `X-Customer-Token` ontbreekt of ongeldig is.
