Introduction
Welcome to the Invivox Partner API documentation.
The code examples in the API are available for Javascript and PHP. You can change the language in the at the top right.
The default dns is : https://partner.invivox.com
Authentication
Introduction
The authentication is done via a token to be passed in a header IVX-PARTNER-TOKEN.
IVX-PARTNER-TOKEN: token
Trainings
List of trainings
const axios = require('axios');
try {
const response = await axios.get('/v1/trainings', {
headers: {
'IVX-PARTNER-TOKEN': '123456789'
},
});
console.log(response);
} catch (error) {
console.error(error);
}
<?php
declare(strict_types=1);
final class TrainingService {
public function __construct(
private readonly string $api,
private readonly HttpClientInterface $client
) {
}
public function getTrainings(): array
{
$response = $this->client->request('GET', $this->api. '/v1/trainings', [
'headers' => [
'IVX-PARTNER-TOKEN' => '123456789'
],
]);
return $response->toArray();
}
}
La route va retourner le json ci-dessous :
{
"page": 1,
"pages": 1,
"count": 2,
"items": 10,
"results": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"subType": null,
"description": "Lorem ipsum dolor set amet",
"currency": "EUR",
"identifier": "PART12345",
"url": "https://invivox.com/training/detail/PART12345",
"prices": [
{
"name": "Standard",
"price": 1000.0
}
],
"sessions": [
{
"seatLeft": 100,
"timezone": "Europe/Paris",
"startAt": "2022-12-01T08:30:00+01:00",
"endAt": "2040-01-01T19:00:00+01:00"
}
],
"createdAt": "2022-12-29T19:25:05+01:00",
"updatedAt": null
},
{
"name": "On-demand",
"type": "ON-DEMAND",
"subType": "E_LEARNING",
"description": "Lorem ipsum dolor set amet",
"currency": "EUR",
"identifier": "PART12346",
"url": "https://invivox.com/training/detail/PART12346",
"prices": [
{
"name": "Standard",
"price": 20.0
},
{
"name": "Prenium",
"price": 100.0
}
],
"sessions": [],
"createdAt": "2022-12-29T19:25:05+01:00",
"updatedAt": null
}
]
}
This route is used to retrieve the institution's list of courses.
HTTP Request
GET https://partner.invivox.com/v1/trainings
Query Parameters
| Parameter | Default | Description | Optional |
|---|---|---|---|
| page | 1 | Page | Yes |
| items | 10 | Number of items returned | Yes |
List of registrations for a training
This route allows you to retrieve the list of registrants for a training.
HTTP Request
GET https://partner.invivox.com/v1/trainings/{IDENTIFIER}/subscriptions
URL Parameters
| Parameter | Description | Optional |
|---|---|---|
| identifier | Identifier of the training | No |
Query Parameters
| Parameter | Default | Description | Optional |
|---|---|---|---|
| page | 1 | Page | Yes |
| items | 10 | Number of items returned | Yes |
| createdAfter | Registration date (YYYY-MM-DD) | Yes |
Attendees
List of attendees
const axios = require('axios');
try {
const response = await axios.get('/v1/attendees', {
headers: {
'IVX-PARTNER-TOKEN': '123456789'
},
});
console.log(response);
} catch (error) {
console.error(error);
}
<?php
declare(strict_types=1);
final class AttendeeService {
public function __construct(
private readonly string $api,
private readonly HttpClientInterface $client
) {
}
public function getAttendees(): array
{
$response = $this->client->request('GET', $this->api. '/v1/attendees', [
'headers' => [
'IVX-PARTNER-TOKEN' => '123456789'
],
]);
return $response->toArray();
}
}
The route will return the following json :
{
"page": 1,
"pages": 10,
"count": 100,
"items": 10,
"results": [
{
"name": "Robert Lucy",
"email": "hamel.raymond@pons.fr",
"speciality": "Veterinarian",
"city": "Munoz",
"country": "CA",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "12/03/2011",
"signAt": "23/02/2009",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Weiss Lucy",
"email": "laurence.mary@germain.com",
"speciality": "speech-therapist",
"city": "Antoine",
"country": "AZ",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "15/02/1984",
"signAt": "10/08/1984",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Chauvin Rémy",
"email": "richard43@orange.fr",
"speciality": "pediatric-surgery",
"city": "Barre-sur-Dupont",
"country": "AN",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "09/04/2021",
"signAt": "19/04/2002",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Francois Yves",
"email": "claudine.lopes@free.fr",
"speciality": "anatomo-cytopathology",
"city": "Allard-la-Forêt",
"country": "MU",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "20/04/1994",
"signAt": "05/06/1992",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Guillaume Édith",
"email": "rlemonnier@marchal.fr",
"speciality": "PM&R",
"city": "Lefebvre",
"country": "MU",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "02/11/1994",
"signAt": "12/10/1976",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Gros Laure",
"email": "veronique.lefebvre@grondin.fr",
"speciality": "neurology",
"city": "Bruneau-la-Forêt",
"country": "CU",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "31/08/2015",
"signAt": "26/02/2007",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Lacroix Corinne",
"email": "robert.ribeiro@lopez.com",
"speciality": "medical-oncology",
"city": "Bourdon-sur-Marin",
"country": "NR",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "08/03/1984",
"signAt": "04/10/2016",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Jourdan Jacques",
"email": "elodie42@normand.com",
"speciality": "cardiology-vascular-disease",
"city": "Bernier",
"country": "PF",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "07/05/1994",
"signAt": "09/01/1978",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Lefort Laetitia",
"email": "schneider.gabrielle@marty.net",
"speciality": "pediatrics",
"city": "HerveBourg",
"country": "BN",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "08/01/2021",
"signAt": "29/04/1999",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
},
{
"name": "Bouvier Céline",
"email": "jacqueline59@noos.fr",
"speciality": "urology",
"city": "Dupuydan",
"country": "PK",
"count": 1,
"trainings": [
{
"name": "Masterclass",
"type": "MASTERCLASS",
"status": "booked",
"currency": "EUR",
"session": "01/12/2022",
"firstRead": "17/07/1982",
"signAt": "11/07/2004",
"identifier": "PART12345",
"cgf": "",
"price": 1000.0
}
]
}
]
}
This route is used to retrieve the institution's list of courses.
HTTP Request
GET https://partner.invivox.com/v1/attendees
Query Parameters
| Parameter | Default | Description | Optional | Type |
|---|---|---|---|---|
| page | 1 | Page | Yes | int |
| items | 10 | Number of items returned | Yes | int |
| search | Allows you to search in the name, first name, email | Yes | string | |
| countries | Country filter (ISO 3166-1 / Alpha-2 Code) | Yes | array | |
| specialities | Filter by specialties (ID) | Yes | array |
Errors
| Code | Description |
|---|---|
| 400 | Bad Request -- The input data is not valid. |
| 401 | Unauthorized -- The JWT is invalid. |
| 404 | Not Found -- The resource has not been found. |
| 405 | Method Not Allowed -- The endpoint is not available with this HTTP method. |
| 500 | Internal Server Error -- An unexpected error occurred. |
| 503 | Service Unavailable -- The API is not accessible. |