/
EF2GO GraphQL API

EF2GO GraphQL API

EF2GO GraphQL API

De EF2GO GraphQL API biedt een set aan operaties waarbij informatie met EF2GO kan worden opgevraagd en of worden gewijzigd.  De EF2GO GraphQL API kan worden ingesteld per “omgeving” en bestrijkt dan ook de scope tot deze omgeving. Eventuele werkmaatschappij parameters kunnen afhankelijk van de methode worden toegevoegd.

Activeren koppeling

Via Sales kan de koppeling worden geactiveerd binnen jouw omgeving. Vervolgens kun je in EF2GO via ‘Beheer > Koppelingen > Easyflex2go’ de koppeling inschakelen.
Vanuit hier kun je een token aanmaken. Deze tokens kun je een duidelijke naam geven,  afschermen voor een bepaald IP adres en actief stellen tot een bepaalde datum.
Daarnaast vind je hier ook het endpoint voor de koppeling (KLANTNAAM.easyflex2go.nl/graphql) en kun je het schema downloaden.
De GraphQL API maakt gebruik van het HTTP POST protocol en dient te worden voorzien van een Authorization header met een Bearer Token.
Indien je gebruikt maakt van Postman kun je dit schema eenvoudig importeren. Na het importeren vind je de methodes die kunnen worden gebruikt.

Binnen de geïmporteerde collectie kun je de globale variabele instellen.

Via Insomnia krijg je na het instellen van het endpoint een mogelijkheid om het schema te downloaden. Zodra het schema is gedownload kun je op het knopje schema drukken om de documentatie te bekijken.
Daarnaast zal Insomnia zorgen voor type hints bij het creëren van de queries.

Mutations

De mutatie berichten bestaan uit twee verschillende objecten. In het eerste object geeft men alle wenselijk mutaties mee. In het tweede object geeft men de gewenste retourvelden aan.

saveCandidate

Operatie voor het opslaan en bewerken van een inschrijving.  Binnen deze operatie is enkel de achternaam verplicht. Alle overige velden kunnen optioneel worden meegegeven. De validatieregels voor de velden zijn terug te vinden in het schema.
Indien de ID parameter wordt meegegeven aan deze operatie wordt de kandidaat ge-update. Indien een veld niet wordt meegegeven wordt hij niet overschreven. Voor het resetten van een waarde kan men een null waarde meegeven.

Voorbeeld:

Request:
mutation {
  saveCandidate(
      gender: 20092
      email: "test@email.nl"
      phone: "0612345678"
      firstname: "Johan"
      marital_condition: 21662
      initials: "JB"
      insertion: "de"
      lastname: "Wit"
      birthdate: "1984-01-01"
      bsn: "252243614"
      iban: "NL04RABO7070755813"
      bic: "RABO4U"
      identification_type: 21583
      identification_number: "NL123456"
      identification_enddate: "2021-10-01"
      nationality: "NL"
      taxreduction: 20381
      taxreduction_date: "2021-02-02"
      birthcountry: "NL"
      chamber_of_commerce_number: "78789792"
      vat_number: "NL999999299B99"
      domicilyaddress: {
        street: "Testraat "
        housenumber: 1
        housenumberaddition: "BIS"
        postal: "1234 AB"
        city: "Oosterhout"
        country: "NL"
      }
      residentialaddress: {
        street: "Testraat "
        housenumber: 2
        housenumberaddition: "GIS"
        postal: "1234 AB"
        city: "Oosterhout"
        country: "NL"
      }
    
  ) {
    id
    gender
    firstname
    initials
    lastname
    insertion
    email
    phone
    marital_condition
    birthdate
    birthplace
    birthcountry
    bsn
    iban
    bic
    identification_type
    identification_number
    identification_enddate
    nationality
    taxreduction
    taxreduction_date
    chamber_of_commerce_number
    vat_number
    domicilyaddress {
      street
      housenumber
      housenumberaddition
      postal
      city
    }
    residentialaddress {
      street
      housenumber
      housenumberaddition
      postal
      city
    }
  }
}


Response:
{
    "data": {
        "saveCandidate": {
            "id": "909",
            "gender": 20092,
            "firstname": "Johan",
            "initials": "JB",
            "lastname": "Wit",
            "insertion": "de",
            "email": "test@email.nl",
            "phone": "0612345678",
            "marital_condition": 21662,
            "birthdate": "1984-01-01",
            "birthplace": null,
            "birthcountry": "NL",
            "bsn": "252243614",
            "iban": "NL04RABO7070755813",
            "bic": "RABO4U",
            "identification_type": 21583,
            "identification_number": "NL123456",
            "identification_enddate": "2021-10-01",
            "nationality": "NL",
            "taxreduction": 20381,
            "taxreduction_date": "2021-02-02",
            "chamber_of_commerce_number": "78789792",
            "vat_number": "NL999999299B99",
            "domicilyaddress": {
                "street": "Testraat",
                "housenumber": 1,
                "housenumberaddition": "BIS",
                "postal": "1234 AB",
                "city": "Oosterhout"
            },
            "residentialaddress": {
                "street": "Testraat",
                "housenumber": 2,
                "housenumberaddition": "GIS",
                "postal": "1234 AB",
                "city": "Oosterhout"
            }
        }
    }
}


deleteCandidate

Operatie voor het verwijderen van een kandidaat. Als parameter moet hier het ID van de kandidaat in. Dit ID vindt men terug op de detailpagina van de inschrijving onder het kopje flexwerker. De aangegeven retour waardes worden vervolgens nog een “laatste” keer retour gedaan.

Voorbeeld:

Request:
mutation deleteCandidate ($id: ID!) {
    deleteCandidate (id: $id) {
        id
        gender
        firstname
        initials
        lastname
        insertion
        email
        marital_condition
        birthdate
        bsn
        iban
        bic
        phone
        identification_type
        identification_number
        identification_enddate
        nationality
        taxreduction
        taxreduction_date
        domicilyaddress {
            street
            housenumber
            housenumberaddition
            postal
            city
            country
        }
        residentialaddress {
            street
            housenumber
            housenumberaddition
            postal
            city
            country
        }
        birthplace
        birthcountry
        chamber_of_commerce_number
        is_foreign_coc
        vat_number
        remark
        email_sent
        created_at
        updated_at
    }
}

Response:
{
    "data": {
        "deleteCandidate": {
            "id": "909",
            "gender": 20092,
            "firstname": "Johan",
            "initials": "JB",
            "lastname": "Wit",
            "insertion": "de",
            "email": "test@email.nl",
            "marital_condition": 21662,
            "birthdate": "1984-01-01",
            "bsn": "252243614",
            "iban": "NL04RABO7070755813",
            "bic": "RABO4U",
            "phone": "0612345678",
            "identification_type": 21583,
            "identification_number": "NL123456",
            "identification_enddate": "2021-10-01",
            "nationality": "NL",
            "taxreduction": 20381,
            "taxreduction_date": "2021-02-02",
            "domicilyaddress": null,
            "residentialaddress": null,
            "birthplace": null,
            "birthcountry": "NL",
            "chamber_of_commerce_number": "78789792",
            "is_foreign_coc": false,
            "vat_number": "NL999999299B99",
            "remark": null,
            "email_sent": null,
            "created_at": "2021-05-18 12:10:36",
            "updated_at": "2021-05-18 12:10:36"
        }
    }
}


saveCandidateRequest

Operatie voor het opslaan van een inschrijving waarbij de gegevens aangeleverd worden door de flexwerker. In deze operatie zijn de velden; geslacht, voornaam, achternaam, voorletters, e-mail, telefoonnummer, aangeleverd door en e-mailtemplate verplicht. Alle overige velden kunnen optioneel worden meegegeven. De validatieregels voor de velden zijn terug te vinden in het schema.

Voorbeeld:

request:
mutation {
  saveCandidateRequest(
    gender: 20091
    firstname: "Johan"
    lastname: "Wit" 
    initials: "JB"
    insertion: "de" 
    email: "test@email.nl" 
    phone: "0612345678"
    candidateProfileId: 2,
    deliveredBy: 4,
    emailTemplateId: 1,
    preferredLanguageCode: "NL"
  ) {
    id,
    gender
    firstname
    initials
    lastname
    insertion
    email
    phone
    candidate_id
    flexworker_request_id
  }
}
response:
{
    "data": {
        "saveCandidateRequest": {
            "id": "47",
            "gender": 20091,
            "firstname": "Johan",
            "initials": "JB",
            "lastname": "Wit",
            "insertion": "de",
            "email": "test@email.nl",
            "phone": "0612345678",
            "candidate_id": null,
            "flexworker_request_id": null
        }
    }
}


Queries

Met de GraphQL queries is het mogelijk om data op te halen uit EF2GO. De gegeven velden en hun relaties zijn terug te vinden in het GraphQL schema. Alle velden zijn optioneel opvraagbaar alsmede hun relaties.

Candidates

Operatie voor het ophalen van kandidaten. Deze methode werkt met een paginator en retourt maximaal 100 kandidaten.  Daarnaast kan er gebruik worden gemaakt van een sortering op achternaam en ID.

Voorbeeld:

query {
  candidates(orderBy: [{ column: ID, order: DESC }] first: 10) {
    data {
        id
        gender
        firstname
        initials
        lastname
        insertion
        email
        marital_condition
        birthdate
        bsn
        iban
        bic
        phone
        identification_type
        identification_number
        identification_enddate
        nationality
        taxreduction
        taxreduction_date
        residentialaddress {
            street
            housenumber
            housenumberaddition
            postal
            city
            country
        }
        birthplace
        birthcountry
        chamber_of_commerce_number
        is_foreign_coc
        vat_number
        remark
        email_sent
        created_at
        updated_at
    }
    paginatorInfo {
        count
        currentPage
        firstItem
        hasMorePages
        lastItem
        lastPage
        perPage
        total
    }
  }
}
    

Opmerking Postman Candidates methode

Uit ervaring blijkt dat Postman de variabelen niet helemaal correct importeert. Dit is echter eenvoudig aan te passen door ervoor te zorgen dat er een array wordt meegegeven i.p.v. van een object.

Verander:

{
  "orderBy": {
    "column": "LASTNAME",
    "order": "ASC"
  },
  "first": 10,
  "page": 1
}

naar:

{
  "orderBy": [{
    "column": "LASTNAME",
    "order": "ASC"
  }],
  "first": 10,
  "page": 1
}        

Candidate

Deze operatie maakt het mogelijk om een enkele kandidaat op te halen op basis van het ID. Deze heeft als parameter ID. En kan mogelijk objecten retouren van het type Candidate (zie het schema voor details.)