# Provisioning

Documentatie voor provisioning middels de Pynter API

# Gebruikers aanmaken

Voor het aanmaken van een gebruiker in Pynter kan gebruik gemaakt worden van de `CreatePerson` endpoint.
Deze endpoint ziet er als volgt uit:

```xml
POST /service/apiservice.asmx HTTP/1.1
Host: domein.pynter.nl
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <CreatePerson xmlns="/service/ApiService.asmx">
      <username>string</username>
      <password>string</password>
      <personCreate></personCreate>
    </CreatePerson>
  </soap12:Body>
</soap12:Envelope>
```

De endpoint verwacht een `personCreate` object geserialiseerd als XML. Dit object ziet er als volgt uit:

```xml
<personCreate>
    <!-- Het medewerkernummer voor deze persoon. Kan gebruikt worden om de persoon op te wijzigen of op te halen. Moet uniek zijn. -->
    <ExternalIdentifier>string</ExternalIdentifier>

    <!-- De voornaam. -->
    <FirstName>string</FirstName>

    <!-- OPTIONEEL: Het tussenvoegsel. -->
    <Insertion>string</Insertion>

    <!-- De achternaam exclusief tussenvoegsel. -->
    <FamilyName>string</FamilyName>

    <!-- Een zakelijk e-mailadres voor de persoon. -->
    <Email>string</Email>

    <!-- OPTIONEEL: Het autorisatieniveau van de persoon. Wanneer dit niet gegeven wordt zal de persoon standaard ingesteld worden als cursist. -->
    <!-- Zie de opmerking onder dit blok voor meer uitleg. -->
    <AccountLevel></AccountLevel>

    <!-- OPTIONEEL: De naam van de functie. -->
    <!-- LET OP: Wanneer dit leeggelaten wordt krijgt de persoon 'Functie onbekend'. -->
    <FunctionName>string</FunctionName>

    <!-- OPTIONEEL: De naam van de divisie / locatie van de persoon. -->
    <!-- LET OP: Wanneer dit leeggelaten wordt krijgt de persoon 'Locatie onbekend'. -->
    <DivisionName>string</DivisionName>

    <!-- OPTIONEEL: De kostenplaats voor de persoon. -->
    <!-- LET OP: Wanneer dit leeggelaten wordt krijgt de persoon een lege kostenplaats. -->
    <CostCentre>string</CostCentre>

    <!-- OPTIONEEL: De telefoonnummer. -->
    <PhoneNumber>string</PhoneNumber>

    <!-- OPTIONEEL: Wanneer het contract van kracht is. -->
    <ContractStartTime>datetime</ContractStartTime>

    <!-- OPTIONEEL: Wanneer het contract afloopt. -->
    <ContractEndTime>datetime</ContractEndTime>

    <!-- OPTIONEEL: Het medewerkernummer van de leidinggevende van deze persoon. -->
    <!-- LET OP: Wanneer dit leeggelaten wordt krijgt de persoon 'Manager onbekend'. -->
    <ManagerExternalIdentifier>string</ManagerExternalIdentifier>
</personCreate>
```

<p class="callout info">
  <a href="https://docs.pynter.nl/books/authenticatie-en-autorisatie/page/autorisatie">
    Voor meer informatie over AccountLevel kan je de pagina over Autorisatie inzien.
  </a>
</p>

Bij het succesvol aanroepen krijg je het volgende resultaat terug:

```xml
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <CreatePersonResponse xmlns="/service/ApiService.asmx">
      <CreatePersonResult>
        <Success>boolean</Success>
        <Contents>int<Contents>
        <Error>string</Error>
      </CreatePersonResult>
    </CreatePersonResponse>
  </soap12:Body>
</soap12:Envelope>
```

In de `Contents` van de response bevind zich het interne Pynter ID van de persoon die later gebruikt kan worden voor het wijzigen van de persoon.

# Gebruikers wijzigen

Voor het bewerken van een gebruiker in Pynter kan gebruik gemaakt worden van de `UpdatePerson` endpoint. Deze endpoint ziet er als volgt uit:

```xml
POST /service/apiservice.asmx HTTP/1.1
Host: domein.acc.pynter.nl
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <UpdatePerson xmlns="/service/ApiService.asmx">
      <username>string</username>
      <password>string</password>
      <pynterPersonId>int</pynterPersonId>
      <personUpdate>
        <ManagerExternalIdentifier>string</ManagerExternalIdentifier>
      </personUpdate>
    </UpdatePerson>
  </soap12:Body>
</soap12:Envelope>

```

De endpoint verwacht een `pynterPersonId`. Dit is het interne ID voor de persoon in Pynter. Deze krijg je terug wanneer je de `createPerson` endpoint aanroept. Voor meer informatie, zie de [Gebruikers aanmaken sectie](https://docs.pynter.nl/books/provisioning/page/gebruikers-aanmaken).

Daarnaast verwacht de endpoint een `personUpdate` object geserialiseerd als XML. Dit object is gelijk aan dat bij het `personCreate` object zoals besproken in de [Gebruikers aanmaken sectie](https://docs.pynter.nl/books/provisioning/page/gebruikers-aanmaken).

<p class="callout warning">**Let op:** Wanneer je de gebruiker op uit dienst zet met een ContractEndDate die in het verleden ligt dan zullen updates aan alle andere velden niet verwerkt worden. Deze persoon komt alleen op uit dienst te staan.</p>

Bij het succesvol aanroepen krijg je het volgende resultaat terug:

```xml
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <UpdatePersonResponse xmlns="/service/ApiService.asmx">
      <UpdatePersonResult>
        <Success>boolean</Success>
        <Contents />
        <Error>string</Error>
      </UpdatePersonResult>
    </UpdatePersonResponse>
  </soap12:Body>
</soap12:Envelope>

```

In de `Contents` van de response bevind zich een lege waarde.