# Concept gebruikers

Concept gebruikers worden via het koppelvlak aangemaakt in Evalytics en opgeslagen als ‘draft users’ Een draft user is in feite een template-user, hier staat enkel de basisinformatie in die benodigd is om er een gebruiker of docent van te maken. Een draft user staat altijd op het hoogste organisatieniveau en heeft geen rol in het systeem

### Overzichtstabel termen

| Naam           | Typ            | Verplicht bij aanmaken | Omschrijving                                                                                                                                                                                                                                                                                                                                                                               |
| -------------- | -------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| title          | string         | Nee                    | Titel van de gebruiker (Bijv: Dhr., Mevr.)                                                                                                                                                                                                                                                                                                                                                 |
| firstName      | string         | Ja                     | Voornaam van de gebruiker                                                                                                                                                                                                                                                                                                                                                                  |
| lastName       | string         | Ja                     | Achternaam van de gebruiker                                                                                                                                                                                                                                                                                                                                                                |
| prefix         | string         | Nee                    | Tussenvoegsel                                                                                                                                                                                                                                                                                                                                                                              |
| code           | string         | Ja                     | Code van de gebruiker                                                                                                                                                                                                                                                                                                                                                                      |
| email          | string (email) | Ja                     | E-mailadres van de gebruiker. Deze moet uniek zijn                                                                                                                                                                                                                                                                                                                                         |
| externalId     | string         | Nee                    | Het externe id van de concept gebruiker                                                                                                                                                                                                                                                                                                                                                    |
| altId          | string         | Nee                    | Een alternatief id. Deze wordt alleen gebruikt als hiervoor een afspraak is gemaakt en is niet nodig om mee te sturen.                                                                                                                                                                                                                                                                     |
| teacherOptions | object         | Nee                    | <p>Je kunt teacherOptions meegeven die worden gebruikt als je een conceptgebruiker omzet naar een docent:</p><ul><li>isWorkingStudent: Als de docent een werkstudent/student assistent is</li><li>isGuestTeacher: Als de docent een gast docent is</li></ul><p>Werkstudenten/gast docenten hebben minder rechten dan een echte docent en kunnen bijvoorbeeld minder resultaten inzien.</p> |

## Concept gebruiker ophalen (lijst)

<mark style="color:blue;">`GET`</mark> `https://api-portal.evalytics.nl/draftUser`

Haal de conceptgebruikers op. Normaal gesproken worden alle concept gebruikers opgehaald die nog **niet** zijn omgezet naar docenten. Je kunt forTopicType=2 (2= type docent) mee geven aan de url om alle concept gebruikers op te halen die **wel** zijn omgezet.

#### Query Parameters

| Name            | Type    | Description                                                                                         |
| --------------- | ------- | --------------------------------------------------------------------------------------------------- |
| convertedToUser | boolean | Haal alle concept gebruikers op die gekoppeld zijn aan een gebruiker                                |
| q               | string  | Zoeken naar conceptgebruikers (Voornaam, Achternaam, code, email, externalId                        |
| forTopicType    | integer | Door topicType=2 mee te geven worden alle concept gebruikers opgehaald die zijn omgezet naar docent |

{% tabs %}
{% tab title="200 " %}

```
{
  "metadata": {
    "timestamp": "2021-02-25T09:51:20.547Z",
    "resultSet": {
      "count": 1
    }
  },
  "results": [
    {
     "id": 1,
     "title": "Dhr.",
     "firstName": "Example",
     "prefix": "",
     "lastName": "user",
     "code": "EU",
     "email": "example@evalytics.nl"
     "organisation": 100,
     "topOrganisation": 100,
     "externalId": "ABC",
     "altId": "",
     "user": null
    }
 ]
}
```

{% endtab %}
{% endtabs %}

## Conceptgebruikers ophalen (item)

<mark style="color:blue;">`GET`</mark> `https://api-portal.evalytics.nl/draftUser/:id`

Een gebruiker kan gevonden worden op basis van het interne of externe id. Hierbij geeft onze API de interne id en organisatie id terug.

#### Path Parameters

| Name | Type   | Description                                     |
| ---- | ------ | ----------------------------------------------- |
| id   | string | Intern id of externalId van de conceptgebruiker |

{% tabs %}
{% tab title="200 " %}

```
{
     "id": 1,
     "title": "Dhr",
     "firstName": "Example",
     "prefix": "",
     "lastName": "user",
     "code": "EU",
     "email": "example@evalytics.nl"
     "organisation": 100,
     "topOrganisation": 100,
     "externalId": "ABC",
     "altId": "",
     "user": null
}
```

{% endtab %}
{% endtabs %}

## Maak een conceptgebruiker aan

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/drafUser`

Maak een conceptgebruiker aan

#### Path Parameters

| Name | Type   | Description |
| ---- | ------ | ----------- |
|      | string |             |

{% tabs %}
{% tab title="200 " %}

```
{
     "id": 1,
     "title": "Dhr.",
     "firstName": "Example",
     "prefix": "",
     "lastName": "user",
     "code": "EU",
     "email": "example@evalytics.nl"
     "organisation": 100,
     "topOrganisation": 100,
     "externalId": "ABC",
     "altId": "",
     "user": null
}
```

{% endtab %}
{% endtabs %}

```
{
  "title": "(string)",
  "firstName":"(string - required)",
  "lastName":"(string - required)",
  "prefix":"(string)",
  "code":"(string - required)",
  "email": (string - required),
  "altId": (string),
  "externalId": (string),
  "teacherOptions": {
    "isWorkingStudent": (boolean),
    "isGuestTeacher": (boolean)
  }
}
```

{% hint style="info" %}
Conceptgebruikers worden altijd op het hoogste niveau aangemaakt. Meestal is dit de school waar de faculteiten en opleidingen aan gekoppeld zijn. Je kunt ze bij alle onderliggende opleidingen/faculteiten ophalen.
{% endhint %}

## Conceptgebruiker bijwerken

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/draftUser/:id`

Indien het gewenst is dat de update van de gebruiker propageert met het systeem (naar de gekoppelde docenten en cursussen), dan kan je dat aangeven met de optie propagate=true.\
&#x20;\
**Voorbeeld**: Er vindt een naamswijziging plaats van Emma de Vries naar Emma de Vries - janssen. De naam wordt gewijzigd bij de volgende onderdelen:\
\- Concept gebruiker\
\- Gebruiker\
\- De docent\
\- Alle cursussen waar de docent aan gekoppeld is.

#### Path Parameters

| Name | Type   | Description                                    |
| ---- | ------ | ---------------------------------------------- |
| id   | string | Intern id of extern id van de conceptgebruiker |

#### Query Parameters

| Name      | Type    | Description                                                      |
| --------- | ------- | ---------------------------------------------------------------- |
| propagate | boolean | Voer update door bij  gekoppelde gebruiker, docent en cursussen. |

{% tabs %}
{% tab title="200 " %}

```
{
     "id": 1,
     "title": "Dhr.",
     "firstName": "Example",
     "prefix": "",
     "lastName": "user",
     "code": "EU",
     "email": "example_updated@evalytics.nl"
     "organisation": 100,
     "topOrganisation": 100,
     "externalId": "ABC",
     "altId": "",
     "user": null
}
```

{% endtab %}
{% endtabs %}

```
{
  "title": "(string)",
  "firstName":"(string)",
  "lastName":"(string)",
  "prefix":"(string)",
  "code":"(string)",
  "email": (string),
  "altId": (string),
  "externalId": (string),
  "teacherOptions": {
    "isWorkingStudent": (boolean),
    "isGuestTeacher": (boolean)
  }
}
```

## Conceptgebruiker omzetten naar docent

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/draftUser/:id/toTeacher`

Als je een concept gebruiker wilt gebruiken als docent, zal deze eerst omgezet moet worden. Er wordt een docent aangemaakt op de organisatie waar je de call op aanroept, dus niet altijd de hoofdorganisatie zoals concept gebruikers. Bij het aanmaken van een docent zal er ook direct een gebruiker aangemaakt worden. De gebruiker krijgt daarnaast ook de rol docent binnen de opleiding.

#### Path Parameters

| Name | Type   | Description                          |
| ---- | ------ | ------------------------------------ |
| id   | string | intern of extern id van de gebruiker |

{% tabs %}
{% tab title="200 Als response krijg je de docent terug die is aangemaakt." %}

```
{
  "type": 2,
  "organisation": 3,
  "topOrganisation": 2,
  "user": 3,
  "deleted": false,
  "createdBy": "3",
  "modifiedBy": null,
  "externalId": "exampleExternalId",
  "archived": false,
  "parent": null,
  "name": "Pascal Examp;e",
  "description": null,
  "data": {
    "title": "Dhr.",
    "firstName": "Pascal",
    "lastName": "Example",
    "prefix": "",
    "code": "ee",
    "emailAddress": "example@evalytics.nl"
  },
  "id": 4
}
```

{% endtab %}
{% endtabs %}

## Concept gebruiker verwijderen

<mark style="color:red;">`DELETE`</mark> `https://api-portal.evalytics.nl/draftUser/:id`

Een gebruiker kan worden verwijderd door middel van een delete. De delete kan op basis van het eerder meegegeven extern id. Indien het gewenst is dat de delete van de gebruiker propageert in het systeem (naar gekoppelde docenten/cursussen) dan dient dit aangegeven te worden met de optie “propagate = true”. Let hierbij wel op dat de docent dan bij alle opleidingen wordt verwijderd, inclusief gerelateerde cursussen en de gebruiker. Mocht het nodig zijn dat een docent wordt verwijderd bij een specifieke opleiding dan dient dit uitgevoerd te worden via de docent API. Tevens wordt een lopende evaluatie niet aangepast (de functie propageert niet naar lopende evaluaties).<br>

#### Path Parameters

| Name | Type   | Description                                  |
| ---- | ------ | -------------------------------------------- |
| id   | string | intern of extern id van de concept gebruiker |

#### Query Parameters

| Name      | Type    | Description                                                                                      |
| --------- | ------- | ------------------------------------------------------------------------------------------------ |
| undo      | boolean | Maak actie ongedaan. Dit is niet mogelijk als je gebruik maakt van propagate                     |
| propagate | string  | Propageren naar onderliggende gebruiker, docenten en cursussen. Kan niet ongedaan gemaakt worden |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Als je tegelijk gebruik maakt van propagate (true) en undo (true), krijg je een 400 - bad request terug van de api .**
{% endhint %}

## Anonymize draft user

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/draftUser/:id/anonymize`

Anonymize a draft user and the linked user/teacher(s). The draft user, user and teacher will be anonymized. This means all personal data will be removed from the (draft)user and teacher(s). Linked evaluations results will not be removed.

#### Path Parameters

| Name | Type   | Description                                  |
| ---- | ------ | -------------------------------------------- |
| id   | string | The external or internal id of the draftUser |

#### Query Parameters

| Name                | Type    | Description                                                                                                                                                                                                                                                                                                                                   |
| ------------------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| forAllOrganisations | boolean | <p>- <strong>false</strong> (default): Anonymize only for the current organisation. The teacher will be anonymized from the current organisation. The (draft)user will only be anonymized when it is not linked to other organisations.<br>- <strong>true</strong>: The teacher and (draft)user will be anonymized for all organisations.</p> |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
When anonymizing the draft user, you can re-use the externalId, because it is not linked to a draftUser anymore.
{% endhint %}

## Block (draft) user

<mark style="color:green;">`POST`</mark> `https://api-portal.evalytics.nl/draftUser/:id/block`

Block a user linked to the draftUser. When a user is blocked:\
\- The user is not able to login\
\- The user will not receive notifications in the period that the user is blocked\
\- The linked organisations and roles will not be removed

#### Path Parameters

| Name | Type   | Description             |
| ---- | ------ | ----------------------- |
| id   | string | Internal or external id |

#### Query Parameters

| Name | Type    | Description           |
| ---- | ------- | --------------------- |
| undo | boolean | Undo the block action |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.evalytics.nl/onderdelen/concept-gebruikers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
