API
الأنشطة
أدِر المحادثات والتفاعلات مع جهات الاتصال
# الأنشطة > أدِر المحادثات والتفاعلات مع جهات الاتصال - الصفحة: https://tbit.app/ar/docs/api/activities - عنوان URL الأساسي: `https://rest-api.tbit.app/v1` - المصادقة: ترويسة `X-API-Key` تحمل مفتاحك في كل طلب (تقرأه الأمثلة من متغير البيئة `TBIT_API_KEY`) ## نظرة عامة تمثّل الأنشطة المحادثات بين وكيلك وجهات الاتصال. يتتبّع كل نشاط محادثة عبر قناة واحدة أو أكثر، بما في ذلك حالتها ووسومها والجهة المكلّفة بها. ## نقاط النهاية | الطريقة | المسار | الوصف | | --- | --- | --- | | `GET` | `/v1/activities` | عرض الأنشطة | | `GET` | `/v1/activities/:id` | جلب تفاصيل نشاط | | `PATCH` | `/v1/activities/:id` | تحديث نشاط | | `POST` | `/v1/activities/:id/tags` | إضافة وسوم إلى نشاط | | `DELETE` | `/v1/activities/:id/tags?tag_id=X` | إزالة وسم من نشاط | ## معاملات الاستعلام تدعم نقطة نهاية العرض معاملات الاستعلام التالية: | المعامل | النوع | الوصف | | --- | --- | --- | | `limit` | `number` | عدد النتائج في الصفحة (الافتراضي: 20، الحد الأقصى: 100) | | `offset` | `number` | عدد النتائج التي يتم تخطيها (الافتراضي: 0) | | `status` | `string` | التصفية حسب الحالة: open أو closed أو pending | | `tag` | `string` | التصفية حسب معرّف الوسم | | `search` | `string` | البحث باسم جهة الاتصال أو رقم الهاتف | ## عرض الأنشطة `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" ``` ## جلب تفاصيل نشاط `GET /v1/activities/64f1a2b3c4d5e6f7a8b9c0d1` ```bash curl "https://rest-api.tbit.app/v1/activities/64f1a2b3c4d5e6f7a8b9c0d1" \ -H "X-API-Key: $TBIT_API_KEY" ``` ## تحديث نشاط `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" }' ``` ## إضافة وسوم `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" ] }' ``` ## إزالة وسم `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" ``` ## صيغة الاستجابة تُرجع نقاط نهاية العرض نتائج مقسّمة إلى صفحات: ```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 } } ```تمثّل الأنشطة المحادثات بين وكيلك وجهات الاتصال. يتتبّع كل نشاط محادثة عبر قناة واحدة أو أكثر، بما في ذلك حالتها ووسومها والجهة المكلّفة بها.
| الطريقة | المسار | الوصف |
|---|---|---|
| GET | /v1/activities | عرض الأنشطة |
| GET | /v1/activities/:id | جلب تفاصيل نشاط |
| PATCH | /v1/activities/:id | تحديث نشاط |
| POST | /v1/activities/:id/tags | إضافة وسوم إلى نشاط |
| DELETE | /v1/activities/:id/tags?tag_id=X | إزالة وسم من نشاط |
تدعم نقطة نهاية العرض معاملات الاستعلام التالية:
| المعامل | النوع | الوصف |
|---|---|---|
limit | number | عدد النتائج في الصفحة (الافتراضي: 20، الحد الأقصى: 100) |
offset | number | عدد النتائج التي يتم تخطيها (الافتراضي: 0) |
status | string | التصفية حسب الحالة: open أو closed أو pending |
tag | string | التصفية حسب معرّف الوسم |
search | string | البحث باسم جهة الاتصال أو رقم الهاتف |
/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);تُرجع نقاط نهاية العرض نتائج مقسّمة إلى صفحات:
{
"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
}
}