# `CRI Accounts (Back-End / Server-Side)`
# `Cri Account docs`
<strong >
CRI Accounts is responsible for handling the client's personal and professional informations. The backend handles the authentication process as well as querying and modifying users informations.
</strong>
# `Contents`
<details>
<summary><strong>Table of Contents</strong></summary>
* [Queries](#Queries)
* [Fetch list of users by id and applicationId](#fetchBulkUserByIds)
* [fetch User By id](#fetchUserById)
* [fetch current user data ](#fetchMyData)
* [check Email Verification](#checkEmailVerification)
* [Mutations](#Mutations)
* [Exchange OAuthCode For AccessToken](#ExchangeOAuthCodeForAccessToken)
* [Refresh Access Token](#refreshAccessToken)
* [Change Password](#ChangePassword)
* [Intro Setup Personal Informations](#introSetupPersonalInformations)
* [Intro Setup Contact Informations](#introSetupContactInformations)
* [Intro Setup Professional Informations](#introSetupProfessionalInformations)
* [Update User](#updateUser)
* [Update User Contact](#updateUserContact)
* [Schema](#SCHEMA)
* [Inputs](#inputs)
* [Update Intro Professional Information](#UpdateIntroProfessionalInformation)
* [Update Intro User Contact Input](#UpdateIntroUserContactInput)
* [Update Intro User Input](#UpdateIntroUserInput)
* [Update Professional Information](#UpdateProfessionalInformation)
* [Update User Contact Input](#UpdateUserContactInput)
* [Update User Input](#UpdateUserInput)
* [Change Password Input](#ChangePasswordInput)
* [Types](#Types)
* [ProfessionalInformation](#ProfessionalInformation)
* [EmailVerification](#EmailVerification)
* [Token](#Token)
* [User](#User)
</details>
# `Test URLs`
### Front-end
https://cri-accounts-dev.netlify.app/
### `Back-end`
https://cri-accounts-dev.lifesaloe.com/
# `Endpoint`
/graphql
## `Queries`
### `fetchBulkUserByIds`
```
fetchBulkUserByIds(p
applicationId: String!
data: [String!]!
): [User!]!
```
#### `arguments`
applicationId: String *required!
data: [String] *required! < list of users ids >
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 ` 401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"fetchBulkUserByIds"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 ` 400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Field \"professional_information\" of type \"ProfessionalInformation\" must have a selection of subfields. Did you mean \"professional_information { ... }\"?",
"locations": [
{
"line": 22,
"column": 5
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"fetchBulkUserByIds": [
{
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
]
}
}
```
### `fetchUserById`
```
fetchUserById(
data: String!
): User!
```
#### `arguments`
data: userId *required!
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"fetchUserById"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Cannot query field \"applicationssdf\" on type \"User\". Did you mean \"applications\"?",
"locations": [
{
"line": 4,
"column": 5
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"fetchUserById": [
{
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
]
}
}
```
### `fetchMyData`
```
me : User
```
#### `arguments`
<none>
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"me"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `200 OK `
```json
{
"data": {
"me": {
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"firstname": "jhon",
"lastname": "smith",
"avatar": "https://ui-avatars.com/api/?name=Abdelouahd+Aithamd",
"email": "jhon@smith.com",
"phonenumber": null,
"birthdate": null,
"__typename": "User"
}
}
}
```
### `checkEmailVerification`
```
checkEmailVerification: EmailVerification!
```
#### `arguments`
<None>
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"checkEmailVerification"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `200 OK `
```json
{
"data": {
"checkEmailVerification": {
"isVerified": false
}
}
}
```
## `Mutations`
### `ExchangeOAuthCodeForAccessToken`
```
exchangeOAuthCodeForAccessToken(
code: String!
redirectUrl: String!
): Token!
```
#### `arguments `
code: String // oAuth Code
redirectUrl: string
#### `headers`
<none>
#### ` Responses` 👋 Schema @[Token Schema ](#Token)
😃 `400 bad Request`
```json
{
"errors": [
{
"message": "Unexpected error value: { statusCode: 400, exception: { error: \"invalid_request\", error_description: \"Invalid Authorization Code\", error_reason: \"auth_code_not_found\" } }",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"exchangeOAuthCodeForAccessToken"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR"
}
}
],
"data": null
}
```
😃 `200 OK `
```json
{
"data": {
"exchangeOAuthCodeForAccessToken": {
"accessToken": ACCESS_TOKEN,
"accessToken": REFRESH_TOKEN // default : null
}
}
```
### `refreshAccessToken`
```
refreshAccessToken(
token: String!
): Token!
```
#### `arguments `
TOKEN
#### `headers`
<none>
#### ` Responses` 👋 Schema @[Token Schema ](#Token)
😃 `400 bad Request`
```json
{
"errors": [
{
"message": "Unexpected error value: { statusCode: 401, exception: { error: \"invalid_client\", error_description: \"client_id: nI7CMA96CU6oCtUFGd_v8YnaNopGI4B2vq0qlsIOY8k is not valid.\", error_reason: \"invalid_client_id\" } }",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"refreshAccessToken"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR"
}
}
],
"data": null
}
```
😃 `200 OK `
```json
{
"data": {
"refreshAccessToken": {
"accessToken": ACCESS_TOKEN,
"accessToken": REFRESH_TOKEN // default : null
}
}
```
### `ChangePassword`
```
changePassword(
data: ChangePasswordInput! // the new password
): User!
```
#### `arguments` 👋 Schema @[Change Password Input Schema ](#ChangePasswordInput)
data: changedPasswordInput
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"changePassword"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Expected value of type \"ChangePasswordInput!\", found \"sdg\".",
"locations": [
{
"line": 2,
"column": 24
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"changePassword": [
{
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
]
}
}
```
### `introSetupPersonalInformations`
```
introSetupPersonalInformations(
data: UpdateIntroUserInput!
): User!
```
#### `arguments` 👋 Schema @[Update Intro User User Input Schema ](#UpdateIntroUserInput)
data : UpdateIntroUserContactInput // fallow link
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"introSetupPersonalInformations"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"errors": [
{
"message": "Field \"UpdateIntroUserInput.category\" of required type \"String!\" was not provided.",
"locations": [
{
"line": 2,
"column": 39
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
},
{
"message": "Field \"categodry\" is not defined by type \"UpdateIntroUserInput\". Did you mean \"category\"?",
"locations": [
{
"line": 4,
"column": 5
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
```
😃 `200 OK `
```json
{
"data": {
"introSetupPersonalInformations": {
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
}
}
```
### `introSetupContactInformations`
```
introSetupContactInformations(
data: UpdateIntroUserContactInput!
): User!
```
#### `arguments` 👋 Schema @[Update Intro User Contact Input Schema ](#UpdateIntroUserContactInput)
data : UpdateIntroUserContactInput // fallow link
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"introSetupContactInformations"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Error Message X",
"locations": [
{
"line": 3,
"column": 37
},
{
"line": 3,
"column": 142
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"introSetupContactInformations": {
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
}
}
```
### `introSetupProfessionalInformations`
```
introSetupProfessionalInformations(
data: UpdateIntroProfessionalInformation!
): User!
```
#### `arguments` 👋 Schema @[Update Intro Professional Information Schema ](#UpdateIntroProfessionalInformation)
data : UpdateIntroProfessionalInformation // fallow link
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"introSetupProfessionalInformations"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Field \"UpdateIntroProfessionalInformation.raison_sociale\" of required type \"String!\" was not provided.",
"locations": [
{
"line": 3,
"column": 11
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"introSetupProfessionalInformations": {
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
}
}
```
### `updateProfessionalInformation`
```
updateProfessionalInformation(
data: UpdateProfessionalInformation!
): User!
```
#### `arguments` 👋 Schema @[Update Professional Information Schema ](#UpdateProfessionalInformation)
data : UpdateProfessionalInformation // fallow link
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"updateProfessionalInformation"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Field \"updateProfessionalInformation.raison_sociale\" of required type \"String!\" was not provided.",
"locations": [
{
"line": 3,
"column": 11
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"updateProfessionalInformation": {
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
}
}
```
### `updateUser`
```
updateUser(
data: UpdateUserInput!
): User!
```
#### `arguments` 👋 Schema @[Update User Input Schema ](#UpdateUserInput)
data : UpdateUserInput // fallow link
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"updateUser"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Error Message",
"locations": [
{
"line": 3,
"column": 11
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"updateUser": {
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
}
}
```
### `updateUserContact`
```
updateUserContact(
data: UpdateUserContactInput!
): User!
```
#### `arguments` 👋 Schema @[Update User Contact Input Schema ](#UpdateUserContactInput)
data : UpdateUserContactInput // fallow link
#### `headers`
Authorization : Bearer <TOKEN>
#### `Responses`
😱 `401 Unauthorized`
```json
{
"errors": [
{
"message": "Unauthorized",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"updateUserContact"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"response": {
"statusCode": 401,
"message": "Unauthorized"
},
"status": 401,
"message": "Unauthorized"
}
}
}
],
"data": null
}
```
😃 `400 bad Request`
```json
{
"error": {
"errors": [
{
"message": "Error Message",
"locations": [
{
"line": 3,
"column": 11
}
],
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}
]
}
}
```
😃 `200 OK `
```json
{
"data": {
"updateUserContact": {
"adresse": null,
"applications": "[\"593ef07e-9c7e-424b-974a-143f9c465cdc\"]",
"avatar": "https://ui-avatars.com/api/?name=XXX+XXXx",
"birthdate": "2021-06-02T12:00:00.000Z",
"category": "Créateur d’entreprise",
"commune": null,
"country": null,
"createdAt": "2021-06-17T19:47:31.196Z",
"email": "email@XXXX.com",
"firstname": "Jhon",
"legal_identification": "JDXXXXXX",
"id": "b298dcbb-3f19-44db-950e-e3facff772d9",
"lastname": "Snow",
"nationality": null,
"onetime_setup": true,
"phonenumber": null,
"province": null,
"updatedAt": "2021-06-23T15:44:15.276Z",
"study_level": "Primaire"
}
}
}
```
## `SCHEMA`
### `inputs`
#### `UpdateIntroProfessionalInformation`
```
input UpdateIntroProfessionalInformation {
adresse: String!
commune: String!
forme_juridique: String!
is_company: Boolean!
numero_de_telephone: String!
province: String!
raison_sociale: String!
representatives_function: String!
siege_social: String!
type_entreprise: String!
}
```
#### `UpdateIntroUserContactInput`
```
input UpdateIntroUserContactInput {
adresse: String!
commune: String
country: String!
nationality: String!
phonenumber: String!
province: String
}
```
#### `UpdateIntroUserInput`
```
input UpdateIntroUserInput {
birthdate: Date!
category: String!
firstname: String!
gender: String!
lastname: String!
legal_identification: String!
onetime_setup: Boolean = true
study_level: String!
}
```
#### `UpdateProfessionalInformation`
```
input UpdateProfessionalInformation {
adresse: String!
commune: String!
forme_juridique: String!
is_company: Boolean!
numero_de_telephone: String!
province: String!
raison_sociale: String!
representatives_function: String!
siege_social: String!
type_entreprise: String!
}
```
#### `UpdateUserContactInput`
```
input UpdateUserContactInput {
adresse: String!
commune: String
country: String!
nationality: String!
phonenumber: String!
province: String
}
```
#### `UpdateUserInput`
```
input UpdateUserInput {
birthdate: Date!
firstname: String!
gender: String!
lastname: String!
legal_identification: String!
study_level: String!
}
```
#### `ChangePasswordInput`
```
input ChangePasswordInput {
newPassword: String!
oldPassword: String!
}
```
### `Types`
#### `ProfessionalInformation`
```
type ProfessionalInformation {
adresse: String!
commune: String!
# Identifies the date and time when the object was created.
createdAt: Date!
forme_juridique: String!
id: ID!
numero_de_telephone: String!
province: String!
raison_sociale: String!
siege_social: String!
type_entreprise: String!
# Identifies the date and time when the object was last updated.
updatedAt: Date!
user: User
}
```
#### `EmailVerification`
```
type EmailVerification {
# Email Verification boolean
isVerified: Boolean!
}
```
#### `Token`
```
type Token {
# JWT access token
accessToken: String!
# JWT refresh token
refreshToken: String
}
```
#### `User`
```
type User {
adresse: String
applications: String
avatar: String
birthdate: Date
category: String
commune: String
country: String
# Identifies the date and time when the object was created.
createdAt: Date!
email: String!
firstname: String!
gender: String
id: ID!
is_company: Boolean!
lastname: String!
legal_identification: String
nationality: String
onetime_setup: Boolean!
phonenumber: String
professional_information: ProfessionalInformation
province: String
representatives_function: String
study_level: String
# Identifies the date and time when the object was last updated.
updatedAt: Date!
}
```