# Angajați și departamente

11 rute, cu exemplu de cerere pentru fiecare.

Adresa de bază: `https://app.ilustromania.com/nucleu`

## Modulul `angajati-echipa`

### GET /v1/angajati

Acces: `sesiune`

**Fișele angajaților**

Lista angajaților firmei; salariile apar doar pentru rolurile care au voie să le vadă.

```bash
curl https://app.ilustromania.com/nucleu/v1/angajati \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE"
```

### POST /v1/angajati

Acces: `sesiune`

**Adaugă un angajat**

Creează fișa unui angajat; câmpurile de salariu cer drept de salarii (403 interzis_salarii).

```bash
curl -X POST https://app.ilustromania.com/nucleu/v1/angajati \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### PATCH /v1/angajati/{id}

Acces: `sesiune`

**Modifică un angajat**

Schimbă câmpurile din fișa angajatului; salariile cer drept de salarii.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X PATCH https://app.ilustromania.com/nucleu/v1/angajati/{id} \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### GET /v1/angajati/{id}/poza

Acces: `sesiune`

**Poza angajatului**

Poza fișei sau, dacă lipsește, poza de profil a contului legat; orice membru al firmei.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl https://app.ilustromania.com/nucleu/v1/angajati/{id}/poza \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE"
```

### PUT /v1/angajati/{id}/poza

Acces: `sesiune`

**Încarcă poza angajatului**

Pune poza pe fișa angajatului (multipart, mărime limitată).

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X PUT https://app.ilustromania.com/nucleu/v1/angajati/{id}/poza \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

## Modulul `departamente`

### GET /v1/departamente

Acces: `sesiune`

**Departamentele**

Departamentele firmei cu oamenii din ele.

Răspuns 200:

| Câmp | Tip | Obligatoriu | Detalii |
| --- | --- | --- | --- |
| `departamente` | `object[]` | da | — |
| `departamente[].id` | `string` | da | UUID |
| `departamente[].nume` | `string` | da | — |
| `departamente[].ordine` | `integer` | da | între -9007199254740991 și 9007199254740991 |
| `departamente[].numarOameni` | `integer` | da | între 0 și 9007199254740991 |
| `departamente[].oameni` | `object[]` | da | — |
| `departamente[].oameni[].contId` | `string` | da | UUID |
| `departamente[].oameni[].nume` | `string` | da | — |
| `departamente[].oameni[].rol` | `string` | da | una din: `admin`, `bucatar`, `casier`, `gestiune`, `patron`, `marketing`, `angajat`, `finante` |
| `departamente[].oameni[].arePoza` | `boolean` | da | — |
| `faraDepartament` | `object[]` | da | — |
| `faraDepartament[].contId` | `string` | da | UUID |
| `faraDepartament[].nume` | `string` | da | — |
| `faraDepartament[].rol` | `string` | da | una din: `admin`, `bucatar`, `casier`, `gestiune`, `patron`, `marketing`, `angajat`, `finante` |
| `faraDepartament[].arePoza` | `boolean` | da | — |

```bash
curl https://app.ilustromania.com/nucleu/v1/departamente \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE"
```

Răspuns 200 (exemplu din schemă):

```json
{
  "departamente": [
    {
      "id": "3f0c2a8e-6b1d-4c3a-9e2f-1a2b3c4d5e6f",
      "nume": "text",
      "ordine": 1,
      "numarOameni": 1,
      "oameni": []
    }
  ],
  "faraDepartament": [
    {
      "contId": "3f0c2a8e-6b1d-4c3a-9e2f-1a2b3c4d5e6f",
      "nume": "text",
      "rol": "admin",
      "arePoza": true
    }
  ]
}
```

### POST /v1/departamente

Acces: `sesiune`

**Adaugă un departament**

Creează un departament; 409 nume existent.

```bash
curl -X POST https://app.ilustromania.com/nucleu/v1/departamente \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### DELETE /v1/departamente/{id}

Acces: `sesiune`

**Șterge un departament**

Șterge departamentul; 404 negăsit.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X DELETE https://app.ilustromania.com/nucleu/v1/departamente/{id} \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE"
```

### PATCH /v1/departamente/{id}

Acces: `sesiune`

**Modifică un departament**

Schimbă numele sau setările unui departament; 404 negăsit, 409 nume existent.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |

```bash
curl -X PATCH https://app.ilustromania.com/nucleu/v1/departamente/{id} \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```

### DELETE /v1/departamente/{id}/oameni/{contId}

Acces: `sesiune`

**Scoate un om din departament**

Scoate contul din departament; 404 negăsit.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |
| `contId` | `string` | valoarea din cale |

```bash
curl -X DELETE https://app.ilustromania.com/nucleu/v1/departamente/{id}/oameni/{contId} \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE"
```

### PUT /v1/departamente/{id}/oameni/{contId}

Acces: `sesiune`

**Mută un om în departament**

Pune contul în departamentul dat.

Parametri de cale:

| Nume | Tip | Descriere |
| --- | --- | --- |
| `id` | `string` | identificatorul resursei |
| `contId` | `string` | valoarea din cale |

```bash
curl -X PUT https://app.ilustromania.com/nucleu/v1/departamente/{id}/oameni/{contId} \
  -H "Cookie: __Host-sesiune=$JETON_SESIUNE" \
  -H "Content-Type: application/json" \
  -d '{ … }'
```
