Les points de terminaison de l'API de gestion groupée vous permettent de créer ou de mettre à jour un grand nombre d'utilisateurs grâce à la collection de gestion groupée des utilisateurs.
L'API est compatible avec les fichiers JSON. Vous pouvez obtenir des données JSON à l'aide de l'API Templates.
Seule l'authentification api_user est acceptée. Vous devez saisir le jeton utilisateur de l'API dans la variable de mot de passe. L'ancienne authentification à l'aide d'un code secret d'entreprise n'est pas acceptée.
Lorsqu'un fichier JSON est importé via l'API d'importation, un job est créé et valide le schéma du fichier JSON.
Les points de terminaison compatibles avec la gestion groupée des utilisateurs sont les suivants :
Pour ajouter ou modifier des utilisateurs de manière groupée à l'aide de l'API Bulk User, procédez comme suit :
Appelez la méthode Template pour obtenir l'objet de modèle JSON que vous utiliserez pour générer le fichier JSON.
Appelez la méthode Bulk add users from file (Ajouter des utilisateurs de manière groupée à partir d'un fichier) ou Bulk update users from file (Mettre à jour des utilisateurs de manière groupée à partir d'un fichier), selon que vous souhaitez ajouter ou mettre à jour des utilisateurs de manière groupée. Cela permet de vérifier le schéma du fichier JSON que vous fournissez.
Une fois le schéma du fichier JSON vérifié, appelez la méthode Proceed. La tâche démarre.
Pour déterminer l'état du job, appelez la méthode Jobs.
Format des fichiers JSON
Vous pouvez obtenir le format de fichier JSON en appelant la méthode de modèle.
| Nom du ou des champs | Valeurs | Obligatoire | Validation |
|---|---|---|---|
| String(Email) | Oui | Veuillez saisir une adresse e-mail valide. Doit être unique dans le fichier au niveau de la colonne "Adresse e-mail" (pas de doublons). Par conséquent, une seule mise à jour par adresse e-mail et par fichier | |
| new_email | String(Email) | Non | Veuillez saisir une adresse e-mail valide. Doit être unique dans la colonne "Nouvelle adresse e-mail" du fichier (pas de doublons). Vous ne pouvez donc effectuer qu'une seule mise à jour par adresse e-mail et par fichier. |
| agent_number | Chaîne | Non | Chaîne sans validation |
| first_name | Chaîne | Oui | Chaîne non vide |
| last_name | Chaîne | Oui | Chaîne non vide |
| état | Actif, Inactif, Vide | Non | Doit être "Active", "Inactive" ou vide |
| emplacement | Chaîne correspondant à un nom de lieu, vide ou nulle | Non | Doit correspondre exactement à l'un des emplacements existants (sans tenir compte de la casse), ou être défini sur "Null" ou être vide |
| max_chat_limit | 1 à X (où X est la valeur configurée), vide | Non | Doit être compris entre 1 et X (inclus) ou être vide |
| max_chat_limit_enabled | 0, 1, Vide | Non | Doit être égal à 0, 1 ou être vide |
| rôles | name: Role name / value: 0, 1, Empty | Non | Doit être égal à 0, 1 ou être vide |
| équipes | name: Team name / value: 0, 1, Empty | Non | Doit être égal à 0, 1 ou être vide |
Une fois la méthode d'API d'importation de fichier JSON exécutée, la méthode d'API "Proceed" peut être appelée, et la création ou la modification de l'utilisateur est alors traitée.
Les méthodes d'importation et de traitement sont exécutées de manière asynchrone par Contact Center AI Platform (CCAI Platform). Vous pouvez vérifier l'état en appelant la méthode jobs et en spécifiant job_id.
Champ "État"
Le champ status du job peut présenter l'une des valeurs suivantes :
| État du job | Description |
|---|---|
| créé | Une tâche est créée et en attente de validation. |
| valid_scheme | La validation du Scheme a réussi et la procédure peut se poursuivre. |
| invalid_scheme | Échec de la validation du Scheme. Vous pouvez consulter des informations détaillées à l'aide de l'API de journal d'erreurs du Scheme. |
| in_progress | Effectuer une mise à jour ou une création groupée d'utilisateurs |
| terminés | Mise à jour/création groupée d'utilisateurs terminée. |
Modèle
Point de terminaison :
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/template
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Obtenir un modèle
Cet exemple montre comment récupérer les modèles.
Requête
Corps : aucun
Réponse : modèle
[
{
"email": "user1@somedomain.com",
"new_email": "user1@somedomain.com",
"agent_number": "A-001",
"first_name": "James",
"last_name": "Bond",
"status": "Active",
"location": "Mexico",
"max_chat_limit": "2",
"max_chat_limit_enabled": "0",
"roles": [
{
"name": "Admin",
"value": 0
},
{
"name": "Manager",
"value": 0
},
{
"name": "Agent",
"value": 0
},
{
"name": "Developer",
"value": 0
},
{
"name": "Manager Admin",
"value": 0
},
{
"name": "Manager Team",
"value": 0
},
{
"name": "Manager Data",
"value": 0
}
],
"teams": [
{
"name": "test team_1",
"value": 0
},
{
"name": "test Team 2",
"value": 0
},
{
"name": "test team 3",
"value": 0
}
]
},
{
"email": "user2@somedomain.com",
"new_email": "user3@somedomain.com",
"agent_number": "A-002",
"first_name": "John",
"last_name": "Doe",
"status": "Inactive",
"location": "",
"max_chat_limit": "",
"max_chat_limit_enabled": "1",
"roles": [
{
"name": "Admin",
"value": 0
},
{
"name": "Manager",
"value": 0
},
{
"name": "Agent",
"value": 0
},
{
"name": "Developer",
"value": 0
},
{
"name": "Manager Admin",
"value": 0
},
{
"name": "Manager Team",
"value": 0
},
{
"name": "Manager Data",
"value": 0
}
],
"teams": [
{
"name": "test team_1",
"value": 0
},
{
"name": "test Team 2",
"value": 0
},
{
"name": "test team 3",
"value": 0
}
]
},
{
"email": "user3@somedomain.com",
"new_email": "user2@somedomain.com",
"agent_number": "A-003",
"first_name": "Jane",
"last_name": "Doe",
"status": "",
"location": "null",
"max_chat_limit": "1",
"max_chat_limit_enabled": "",
"roles": [
{
"name": "Admin",
"value": 0
},
{
"name": "Manager",
"value": 0
},
{
"name": "Agent",
"value": 0
},
{
"name": "Developer",
"value": 0
},
{
"name": "Manager Admin",
"value": 0
},
{
"name": "Manager Team",
"value": 0
},
{
"name": "Manager Data",
"value": 0
}
],
"teams": [
{
"name": "test team_1",
"value": 0
},
{
"name": "test Team 2",
"value": 0
},
{
"name": "test team 3",
"value": 0
}
]
}
]
Code d'état : 200
Jobs
Point de terminaison :
Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/bulk/users/jobs/{job_id}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Détails de la tâche
Cet exemple montre comment récupérer les détails d'une tâche spécifique. Dans cet exemple, l'ID du job est 1.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : Détails de la tâche
{
"id": 1,
"created_at": "2022-01-07T06:06:45.000Z",
"process_requested_at": null,
"filename": "100row.csv",
"total_rows": 100,
"affected_rows": 0,
"failed_rows": 0,
"status": "created",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": null,
"scheme_errors": [],
"update_errors": []
}
Code d'état : 200
Liste des jobs
Cet exemple montre comment obtenir tous les jobs.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/
Réponse : liste des tâches
[
{
"id": 3,
"created_at": "2022-01-07T06:21:10.000Z",
"process_requested_at": "2022-01-07T06:22:25.000Z",
"filename": "100row_new.csv",
"total_rows": 100,
"affected_rows": 0,
"failed_rows": 0,
"status": "in_progress",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": "zdco_admin",
"scheme_errors": [],
"update_errors": []
},
{
"id": 2,
"created_at": "2022-01-07T06:17:09.000Z",
"process_requested_at": null,
"filename": "100row.csv",
"total_rows": 100,
"affected_rows": 0,
"failed_rows": 0,
"status": "created",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": null,
"scheme_errors": [],
"update_errors": []
},
{
"id": 1,
"created_at": "2022-01-07T06:06:45.000Z",
"process_requested_at": null,
"filename": "100row.csv",
"total_rows": 100,
"affected_rows": 0,
"failed_rows": 0,
"status": "created",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": null,
"scheme_errors": [],
"update_errors": []
}
]
Code d'état : 200
Tâche créée
Cet exemple montre comment récupérer les tâches de requête utilisateur groupées qui ont été créées.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : Tâche créée
{
"id": 1,
"created_at": "2022-01-07T06:39:59.000Z",
"process_requested_at": null,
"filename": "100row_new.csv",
"total_rows": 100,
"affected_rows": 0,
"failed_rows": 0,
"status": "created",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": null,
"scheme_errors": [],
"update_errors": []
}
Code d'état : 200
Validation réussie du job
Cet exemple montre comment valider la réussite d'un job.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : validation de la tâche réussie
{
"id": 1,
"created_at": "2022-01-07T06:40:34.000Z",
"process_requested_at": null,
"filename": "100row_new.csv",
"total_rows": 100,
"affected_rows": 0,
"failed_rows": 0,
"status": "valid_scheme",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": null,
"scheme_errors": [],
"update_errors": []
}
Code d'état : 200
Échec de la validation du job
Cet exemple montre comment déterminer qu'une tâche a échoué.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : Échec de la validation du job
{
"id": 1,
"created_at": "2022-01-07T06:40:34.000Z",
"process_requested_at": null,
"filename": "100row_new.csv",
"total_rows": 100,
"affected_rows": 0,
"failed_rows": 0,
"status": "invalid_scheme",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": null,
"scheme_errors": [
"scheme error detail 1",
"scheme error detail 2",
"scheme error detail 3"
],
"update_errors": []
}
Code d'état : 200
Mise à jour des tâches
Cet exemple montre comment déterminer qu'un job est en cours de mise à jour.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : mise à jour de la tâche
{
"id": 1,
"created_at": "2022-01-07T06:40:34.000Z",
"process_requested_at": "2022-01-07T06:42:59.000Z",
"filename": "100row_new.csv",
"total_rows": 100,
"affected_rows": 52,
"failed_rows": 0,
"status": "in_progress",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": "zdco_admin",
"scheme_errors": [],
"update_errors": []
}
Code d'état : 200
Mise à jour de l'offre d'emploi terminée sans erreur
Dans cet exemple, nous montrons comment identifier une tâche terminée sans erreur.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : Mise à jour de l'emploi terminée sans erreurs
{
"id": 1,
"created_at": "2022-01-07T06:40:34.000Z",
"process_requested_at": "2022-01-07T06:42:59.000Z",
"filename": "100row_new.csv",
"total_rows": 100,
"affected_rows": 100,
"failed_rows": 0,
"status": "finished",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": "zdco_admin",
"scheme_errors": [],
"update_errors": []
}
Code d'état : 200
Mise à jour du job terminée avec des erreurs
Cet exemple montre comment identifier une tâche qui s'est terminée avec des erreurs.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : Mise à jour du job terminée avec des erreurs
{
"id": 1,
"created_at": "2022-01-07T06:40:34.000Z",
"process_requested_at": "2022-01-07T06:42:59.000Z",
"filename": "100row_new.csv",
"total_rows": 100,
"affected_rows": 100,
"failed_rows": 0,
"status": "finished",
"uploaded_user_name": null,
"proceed_user_name": null,
"uploaded_api_user_name": "zdco_admin",
"proceed_api_user_name": "zdco_admin",
"scheme_errors": [],
"update_errors": [
"update error detail 1",
"update error detail 2",
"update error detail 3"
]
}
Code d'état : 200
Erreur : ID de tâche non valide
Cet exemple montre une demande d'échec lorsque l'ID du job n'est pas valide.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | application/json |
Requête
Method: GET
Type:
URL: https://{subdomain}.{domain}/apps/api/v1/bulk/users/jobs/1
Réponse : Erreur : ID de tâche non valide
{
"message": "Not Found"
}
Code d'état : 404
Ajouter et modifier des utilisateurs de manière groupée à partir d'un fichier
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | multipart/form-data |
Point de terminaison :
Method: POST
Type: FORM DATA
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/bulk/users/upload
Corps :
| Clé | Valeur | Description |
|---|---|---|
| fichier |
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Tâche créée
Cet exemple montre comment envoyer un job.
Requête
Corps :
| Clé | Valeur | Description |
|---|---|---|
| fichier |
Réponse : Tâche créée
{
"id": 1,
"status": "created",
"link": "https://{{subdomain}}.{{domain}}/apps/api/v1/bulk/users/jobs/1"
}
Code d'état : 200
Continuer
Ce point de terminaison de l'API permet de poursuivre un job ipport qui a été démarré.
Point de terminaison :
Method: POST
Type: FORM DATA
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/bulk/users/proceed
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | multipart/form-data |
Corps :
| Clé | Valeur | Description |
|---|---|---|
| id | `[job_id}` |
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Poursuite réussie
Cet exemple montre une procédure de job réussie.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | multipart/form-data |
Requête
| Clé | Valeur | Description |
|---|---|---|
| id | `[job_id}` |
Réponse : Procéder à la réussite
{
"id": 1,
"status": "valid_scheme",
"link": "https://{{subdomain}}.{{domain}}/apps/api/v1/bulk/users/jobs/1"
}
Code d'état : 200
Erreur : Poursuivre avant la validation
Cet exemple montre une procédure avant la validation.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | multipart/form-data |
Requête
| Clé | Valeur | Description |
|---|---|---|
| id | `[job_id}` |
Réponse : Erreur : Procéder avant la validation
{
"message": "This job cannot proceed update. status: created"
}
Code d'état : 400
Erreur : Poursuivre quand l'opération est en cours
Cet exemple montre une poursuite lorsque le job est déjà en cours.
Requête
En-têtes
| Clé | Valeur | Description |
|---|---|---|
| Content-Type | multipart/form-data |
Requête
| Clé | Valeur | Description |
|---|---|---|
| id | `[job_id}` |
Réponse : Erreur : Continuer quand l'opération est en cours
{
"message": "Update is already in progress."
}
Code d'état : 400
Erreurs de Scheme
Point de terminaison :
Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/bulk/users/errors/scheme/{job_id}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Erreurs de Scheme
Cet exemple montre comment récupérer les erreurs de schéma.
Requête
Corps : aucun
Réponse : erreurs de Scheme
[
{
"message": "scheme error message 1",
"column": null,
"row": 1
},
{
"message": "scheme error message 2",
"column": null,
"row": 2
}
]
Code d'état : 200
Aucune erreur
Cet exemple montre comment récupérer les erreurs de schéma sans aucune erreur.
Requête
Corps : aucun
Réponse : Aucune erreur
[]
Code d'état : 200
Erreurs de mise à jour
Point de terminaison :
Method: GET
Type:
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/bulk/users/errors/update/{job_id}
Exemple de requête et de réponses
Les sections suivantes fournissent des exemples de requêtes au point de terminaison.
Erreurs de mise à jour
Cet exemple montre comment récupérer les erreurs de schéma avec les erreurs de mise à jour.
Requête
Corps : aucun
Réponse : Erreurs de mise à jour
[
{
"message": "update error message 1",
"column": 1,
"row": 1,
"error_type": "error"
},
{
"message": "update error message 2",
"column": null,
"row": 2,
"error_type": "error"
},
{
"message": "update warning message 1",
"column": 3,
"row": 3,
"error_type": "warning"
},
{
"message": "update warning message 2",
"column": null,
"row": 4,
"error_type": "warning"
}
]
Code d'état : 200
Aucune erreur
Cet exemple montre comment récupérer les erreurs de schéma sans aucune erreur.
Requête
Corps : aucun
Réponse : Aucune erreur
[]
Code d'état : 200