API
Activités
Gérez les conversations et les interactions avec les contacts
# Activités > Gérez les conversations et les interactions avec les contacts - Page: https://tbit.app/fr/docs/api/activities - URL de base: `https://rest-api.tbit.app/v1` - Authentification: en-tête `X-API-Key` avec votre clé dans chaque requête (les exemples la lisent depuis la variable d'environnement `TBIT_API_KEY`) ## Vue d'ensemble Les activités représentent les conversations entre votre agent et les contacts. Chaque activité suit une conversation sur un ou plusieurs canaux, avec son statut, ses étiquettes et son attribution. ## Endpoints | Méthode | Chemin | Description | | --- | --- | --- | | `GET` | `/v1/activities` | Lister les activités | | `GET` | `/v1/activities/:id` | Obtenir le détail d'une activité | | `PATCH` | `/v1/activities/:id` | Mettre à jour une activité | | `POST` | `/v1/activities/:id/tags` | Ajouter des étiquettes à une activité | | `DELETE` | `/v1/activities/:id/tags?tag_id=X` | Retirer une étiquette d'une activité | ## Paramètres de requête L'endpoint de liste accepte les paramètres de requête suivants : | Paramètre | Type | Description | | --- | --- | --- | | `limit` | `number` | Résultats par page (par défaut : 20, max : 100) | | `offset` | `number` | Nombre de résultats à sauter (par défaut : 0) | | `status` | `string` | Filtrer par statut : open, closed, pending | | `tag` | `string` | Filtrer par ID d'étiquette | | `search` | `string` | Rechercher par nom du contact ou numéro de téléphone | ## Lister les activités `GET /v1/activities` ```bash curl "https://rest-api.tbit.app/v1/activities?limit=20&offset=0&status=open" \ -H "X-API-Key: $TBIT_API_KEY" ``` ## Obtenir le détail d'une activité `GET /v1/activities/64f1a2b3c4d5e6f7a8b9c0d1` ```bash curl "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1" \ -H "X-API-Key: $TBIT_API_KEY" ``` ## Mettre à jour une activité `PATCH /v1/activities/64f1a2b3c4d5e6f7a8b9c0d1` ```bash curl -X PATCH "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1" \ -H "X-API-Key: $TBIT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "status": "closed", "assigned_to": "agent_user_id", "profile_name": "John Doe" }' ``` ## Ajouter des étiquettes `POST /v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags` ```bash curl -X POST "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags" \ -H "X-API-Key: $TBIT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "tag_ids": [ "tag_id_1", "tag_id_2" ] }' ``` ## Supprimer une étiquette `DELETE /v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags` ```bash curl -X DELETE "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags?tag_id=tag_id_1" \ -H "X-API-Key: $TBIT_API_KEY" ``` ## Format de réponse Les endpoints de liste renvoient des résultats paginés : ```json { "data": [ { "id": "64f1a2b3c4d5e6f7a8b9c0d1", "status": "open", "profile_name": "John Doe", "channel_identifiers": ["573001234567"], "tags": [ { "id": "tag_1", "name": "VIP", "color": "#ef4444" } ], "assigned_to": null, "created_at": "2024-09-01T12:00:00Z", "updated_at": "2024-09-01T14:30:00Z" } ], "pagination": { "total": 100, "limit": 20, "offset": 0, "has_more": true } } ```Les activités représentent les conversations entre votre agent et les contacts. Chaque activité suit une conversation sur un ou plusieurs canaux, avec son statut, ses étiquettes et son attribution.
| Méthode | Chemin | Description |
|---|---|---|
| GET | /v1/activities | Lister les activités |
| GET | /v1/activities/:id | Obtenir le détail d'une activité |
| PATCH | /v1/activities/:id | Mettre à jour une activité |
| POST | /v1/activities/:id/tags | Ajouter des étiquettes à une activité |
| DELETE | /v1/activities/:id/tags?tag_id=X | Retirer une étiquette d'une activité |
L'endpoint de liste accepte les paramètres de requête suivants :
| Paramètre | Type | Description |
|---|---|---|
limit | number | Résultats par page (par défaut : 20, max : 100) |
offset | number | Nombre de résultats à sauter (par défaut : 0) |
status | string | Filtrer par statut : open, closed, pending |
tag | string | Filtrer par ID d'étiquette |
search | string | Rechercher par nom du contact ou numéro de téléphone |
/v1/activitiescurl "https://rest-api.tbit.app/v1/activities?limit=20&offset=0&status=open" \
-H "X-API-Key: $TBIT_API_KEY"const response = await fetch('https://rest-api.tbit.app/v1/activities?limit=20&offset=0&status=open', {
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
});
const data = await response.json();import axios from 'axios';
const { data } = await axios.get(
'https://rest-api.tbit.app/v1/activities?limit=20&offset=0&status=open',
{
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
},
);import os
import requests
response = requests.get(
'https://rest-api.tbit.app/v1/activities?limit=20&offset=0&status=open',
headers={'X-API-Key': os.environ['TBIT_API_KEY']},
)
data = response.json()<?php
$ch = curl_init('https://rest-api.tbit.app/v1/activities?limit=20&offset=0&status=open');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . getenv('TBIT_API_KEY'),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1curl "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1" \
-H "X-API-Key: $TBIT_API_KEY"const response = await fetch('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1', {
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
});
const data = await response.json();import axios from 'axios';
const { data } = await axios.get(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1',
{
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
},
);import os
import requests
response = requests.get(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1',
headers={'X-API-Key': os.environ['TBIT_API_KEY']},
)
data = response.json()<?php
$ch = curl_init('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . getenv('TBIT_API_KEY'),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1curl -X PATCH "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1" \
-H "X-API-Key: $TBIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "closed",
"assigned_to": "agent_user_id",
"profile_name": "John Doe"
}'const response = await fetch('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1', {
method: 'PATCH',
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
status: 'closed',
assigned_to: 'agent_user_id',
profile_name: 'John Doe',
}),
});
const data = await response.json();import axios from 'axios';
const { data } = await axios.patch(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1',
{
status: 'closed',
assigned_to: 'agent_user_id',
profile_name: 'John Doe',
},
{
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
},
);import os
import requests
response = requests.patch(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1',
headers={'X-API-Key': os.environ['TBIT_API_KEY']},
json={
'status': 'closed',
'assigned_to': 'agent_user_id',
'profile_name': 'John Doe',
},
)
data = response.json()<?php
$ch = curl_init('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . getenv('TBIT_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'status' => 'closed',
'assigned_to' => 'agent_user_id',
'profile_name' => 'John Doe',
]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tagscurl -X POST "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags" \
-H "X-API-Key: $TBIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tag_ids": [
"tag_id_1",
"tag_id_2"
]
}'const response = await fetch('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags', {
method: 'POST',
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
tag_ids: [
'tag_id_1',
'tag_id_2',
],
}),
});
const data = await response.json();import axios from 'axios';
const { data } = await axios.post(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags',
{
tag_ids: [
'tag_id_1',
'tag_id_2',
],
},
{
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
},
);import os
import requests
response = requests.post(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags',
headers={'X-API-Key': os.environ['TBIT_API_KEY']},
json={
'tag_ids': [
'tag_id_1',
'tag_id_2',
],
},
)
data = response.json()<?php
$ch = curl_init('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . getenv('TBIT_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'tag_ids' => [
'tag_id_1',
'tag_id_2',
],
]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tagscurl -X DELETE "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags?tag_id=tag_id_1" \
-H "X-API-Key: $TBIT_API_KEY"const response = await fetch('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags?tag_id=tag_id_1', {
method: 'DELETE',
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
});
const data = await response.json();import axios from 'axios';
const { data } = await axios.delete(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags?tag_id=tag_id_1',
{
headers: {
'X-API-Key': process.env.TBIT_API_KEY,
},
},
);import os
import requests
response = requests.delete(
'https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags?tag_id=tag_id_1',
headers={'X-API-Key': os.environ['TBIT_API_KEY']},
)
data = response.json()<?php
$ch = curl_init('https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1/tags?tag_id=tag_id_1');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: ' . getenv('TBIT_API_KEY'),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);Les endpoints de liste renvoient des résultats paginés :
{
"data": [
{
"id": "64f1a2b3c4d5e6f7a8b9c0d1",
"status": "open",
"profile_name": "John Doe",
"channel_identifiers": ["573001234567"],
"tags": [
{ "id": "tag_1", "name": "VIP", "color": "#ef4444" }
],
"assigned_to": null,
"created_at": "2024-09-01T12:00:00Z",
"updated_at": "2024-09-01T14:30:00Z"
}
],
"pagination": {
"total": 100,
"limit": 20,
"offset": 0,
"has_more": true
}
}