# VConnct Client API - Client Documetation (v1)
## Description
- This tool used for making conference meetings with some settings for every meeting.
- There are 2 different concepts :
1. Meeting: is the static meeting which scheduled before with static id used every time you need to start this meeting, every meeting id can run several times.
2. Session: When the meeting is running it is called session, the session id used just once.
- There are two types of users:
1. Moderator.
2. Attendee.
- Every Business Partner has License key used for accessing the APIs and every License key has **expiration** **date**, **maximum Meeting rooms** and **maximum Attendance for every room** .
# APIs Endpoints
**Request headers** **to be considered for every request**.
| **Key** | **Value** | **Description** |
| :--- | :--- | :--- |
| `license` | `string` | **Required**. Business Partner license key to access API endpoints. key |
| `Accept-Language` | `string` |**Optional**. indicates the natural language and locale that the client prefers.|
## 1. Create Meeting
The API responsible for the meeting creation.
```http
POST /api/v1/create_meeting/
```
| **Key** | **Value** | Description
| :--- | :--- | :--- |
| `title` | `string` | **Optional**. Meeting title |
| `moderator_password` | `string` | **Optional**. moderator password for start a new meeting session or enter as a moderator |
| `welcome_text` | `string` | **Optional**. Meeting welcome text |
| `meeting_setting` | `array` | **Required**. Array of 10 required setting objects |
**Request example**
```javascript
{
"title": "meeting title",
"moderator_password": "modpwd",
"welcome_text": "welcome to the class",
"meeting_setting": [
{
"setting":"lock_settings_disable_public_chat",
"value":true
},
{
"setting":"lock_settings_disable_mic",
"value":true
},
{
"setting":"auto_start_recording",
"value":true
},
{
"setting":"lock_settings_disable_cam",
"value":true
},
{
"setting":"lock_settings_locked_layout",
"value":true
},
{
"setting":"allow_start_stop_recording",
"value":true
},
{
"setting":"record",
"value":true
},
{
"setting":"webcam_only_for_moderators",
"value":true
},
{
"setting":"lock_settings_disable_note",
"value":true
},
{
"setting":"lock_settings_disable_private_chat",
"value":true
}
]
}
```
**Response example**
```javascript
{
"status": true,
"status_code": 201,
"message": "success",
"data": {
"meeting_id": "0db9ac9d-399b-4b9b-987c-50fd77f5d15d",
"title": "meeting title",
"moderator_password": "modpwd",
"welcome_text": "welcome to the class",
"meeting_setting": [
{
"setting":"lock_settings_disable_public_chat",
"value":true
},
{
"setting":"lock_settings_disable_mic",
"value":true
},
{
"setting":"auto_start_recording",
"value":true
},
{
"setting":"lock_settings_disable_cam",
"value":true
},
{
"setting":"lock_settings_locked_layout",
"value":true
},
{
"setting":"allow_start_stop_recording",
"value":true
},
{
"setting":"record",
"value":true
},
{
"setting":"webcam_only_for_moderators",
"value":true
},
{
"setting":"lock_settings_disable_note",
"value":true
},
{
"setting":"lock_settings_disable_private_chat",
"value":true
}
]
},
"success_message": "تمت اضافه الاجتماع بنجاح!"
}
```
## 2. Update Meeting
The API responsible for the meeting update.
```http
PUT /api/v1/update_meeting/?meeting_id=0db9ac9d-399b-4b9b-987c-50fd77f5d15d
```
| **Key** | **Value** | Description
| :--- | :--- | :--- |
| `title` | `string` | **Optional**. Meeting title |
| `moderator_password` | `string` | **Optional**. moderator password for start a new meeting session or enter as a moderator |
| `welcome_text` | `string` | **Optional**. Meeting welcome text |
| `meeting_setting` | `array` | **Required**. Array of 10 required setting objects |
**Request example**
```javascript
{
"title": "updated meeting title",
"moderator_password": "updated_modpwd",
"welcome_text": "updated welcome to the class",
"meeting_setting": [
{
"setting":"lock_settings_disable_public_chat",
"value":false
},
{
"setting":"lock_settings_disable_mic",
"value":true
},
{
"setting":"auto_start_recording",
"value":false
},
{
"setting":"lock_settings_disable_cam",
"value":true
},
{
"setting":"lock_settings_locked_layout",
"value":false
},
{
"setting":"allow_start_stop_recording",
"value":true
},
{
"setting":"record",
"value":false
},
{
"setting":"webcam_only_for_moderators",
"value":true
},
{
"setting":"lock_settings_disable_note",
"value":false
},
{
"setting":"lock_settings_disable_private_chat",
"value":true
}
]
}
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": {
"meeting_id": "0db9ac9d-399b-4b9b-987c-50fd77f5d15d",
"title": "updated meeting title",
"moderator_password": "updated_modpwd",
"welcome_text": "updated welcome to the class",
"meeting_setting": [
{
"setting":"lock_settings_disable_public_chat",
"value":false
},
{
"setting":"lock_settings_disable_mic",
"value":true
},
{
"setting":"auto_start_recording",
"value":false
},
{
"setting":"lock_settings_disable_cam",
"value":true
},
{
"setting":"lock_settings_locked_layout",
"value":false
},
{
"setting":"allow_start_stop_recording",
"value":true
},
{
"setting":"record",
"value":false
},
{
"setting":"webcam_only_for_moderators",
"value":true
},
{
"setting":"lock_settings_disable_note",
"value":false
},
{
"setting":"lock_settings_disable_private_chat",
"value":true
}
]
},
"success_message": "لقد تم تعديل بيانات الاجتماع بنجاح!"
}
```
## 3. Start Meeting
The API responsible for starting a new meeting session.
```http
POST /api/v1/start_meeting/
```
| **Key** | **Value** | Description
| :--- | :--- | :--- |
| `meeting_id` | `UUID` | **Required**. The meeting id to start meeting session with |
| `title` | `string` | **Optional**. moderator password for start a new meeting session or enter as a moderator |
| `attendee_password` | `string` | **Optional**. password for joining the meeting as an attendee |
| `moderator_password` | `string` | **Optional**. Meeting moderator password for creating a new session |
| `moderator_name` | `string` | **Required**. moderator name |
| `logout_url` | `string` | **Optional**. logout URL to be redirected to |
**Request example**
```javascript
{
"meeting_id": "0db9ac9d-399b-4b9b-987c-50fd77f5d15d",
"title": "session title",
"attendee_password": "attpwd",
"moderator_password": "modpwd",
"moderator_name": "mod1",
"logout_url": "example.com",
}
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": {
"title": "session title",
"url": "https://vconnct-client-api.com/api/join?fullName=mod1&meetingID=0db9ac9d-399b-4b9b-987c- 50fd77f5d15d&password=modpwd&checksum=1531e711a3cf4ac3ecd7227e3a8e28ad0764c868"
},
"success_message": "الاجتماع الان تم تشغيله!"
}
```
## 4. Join Meeting
The API responsible for joining a running meeting session.
There are two scenarios here:
1. join as moderator: (moderator)
required moderator password to be passed with password key, if the password matches. The requested user will join as a moderator.
2. join as attendee: (viewer)
required attendee password to be passed with password key, if the password matches. The requested user will join as an attendee.
```http
POST /api/v1/start_meeting/
```
| **Key** | **Value** | Description
| :--- | :--- | :--- |
| `meeting_id` | `UUID` | **Required**. The meeting id to join meeting session with |
| `fullname` | `string` | **Required**. Full name for attendee or moderator |
| `password` | `string` | **Optional**. Password phrase for authentication |
| `role` | `string` | **Required**. Select between two options: **moderator** or **viewer** |
**Request example**
```javascript
{
"meeting_id": "0db9ac9d-399b-4b9b-987c-50fd77f5d15d",
"fullname": "John Doe",
"password": "attpwd",
"role": "viewer"
}
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": {
"url": "https://vconnct-client-api.com/api/join?fullName=John_Doe&meetingID=0db9ac9d-399b-4b9b-987c- 50fd77f5d15d&password=modpwd&checksum=1531e711a3cf4ac3ecd7227e3a8e28ad0764c868"
},
"success_message": "لقد تم دخولك للاحتماع بنجاح!"
}
```
## 5. End Meeting
The API responsible for ending a running meeting session.
```http
GET /api/v1/end_meeting/?meeting_id=0db9ac9d-399b-4b9b-987c-50fd77f5d15d
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": null,
"success_message": "تم بنجاح!"
}
```
## 6. Delete Scheduled Meeting
The API responsible for deleting a scheduled meeting.
User can’t delete a scheduled meeting if it’s running.
```http
DELETE /api/v1/delete_scheduled_meeting/?meeting_id=0db9ac9d-399b-4b9b-987c-50fd77f5d15d
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": null,
"success_message": "تم الحذف بنجاح!"
}
```
## 7. List Sessions
The API responsible for list all sessions related to a specific meeting.
```http
GET /api/v1/list_sessions/?meeting_id=0db9ac9d-399b-4b9b-987c-50fd77f5d15d
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": [
{
"session_id": "546b4f17-16dc-4d07-b155-a5994e0ce161",
"title": "session1 title",
"session_start_time": "2022-12-20T12:08:46.148Z",
"session_end_time": "2022-12-20T12:08:57.281Z",
"attendee_password": "attpwd",
"status": true
},
{
"session_id": "546b4f17-16dc-4d07-b155-a5994e0ce161",
"title": "session2 title",
"session_start_time": "2022-12-20T12:08:46.148Z",
"session_end_time": "2022-12-20T12:08:57.281Z",
"attendee_password": "attpwd",
"status": true
}
],
"success_message": "تم بنجاح!"
}
```
## 8. List Meetings
The API responsible for list all meetings.
```http
GET /api/v1/list_meetings/
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": [
{
"meeting_id": "cc22d75f-2e53-4b1a-a1da-afcafa633364",
"title": "meeting1 title",
"is_running": true,
"moderator_password": "modpwd",
"welcome_text": "welcome to the class"
},
{
"meeting_id": "cc22d75f-2e53-4b1a-a1da-afcafa633364",
"title": "meeting2 title",
"is_running": true,
"moderator_password": "modpwd",
"welcome_text": "welcome to the class"
}
],
"success_message": "تم بنجاح!"
}
```
## 9. List Attendance
The API responsible for list all meeting session attendance.
```http
GET /api/v1/list_attendance/?session_id=f7b75854-7cdc-4a4e-9888-9cfb8bb1feef
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": [
{
"full_name": "attendee 3",
"joined_date": "2022-12-20T12:22:30.564Z"
},
{
"full_name": "attendee 1",
"joined_date": "2022-12-20T12:22:21.897Z"
},
{
"full_name": "attendee 2",
"joined_date": "2022-12-20T12:22:25.430Z"
}
],
"success_message": "تم بنجاح!"
}
```
## 10. List Settings
The API responsible for list all meeting settings.
```http
GET /api/v1/list_setting/?meeting_id=0db9ac9d-399b-4b9b-987c-50fd77f5d15d
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": [
{
"setting":"lock_settings_disable_public_chat",
"value":false
},
{
"setting":"lock_settings_disable_mic",
"value":true
},
{
"setting":"auto_start_recording",
"value":false
},
{
"setting":"lock_settings_disable_cam",
"value":true
},
{
"setting":"lock_settings_locked_layout",
"value":false
},
{
"setting":"allow_start_stop_recording",
"value":true
},
{
"setting":"record",
"value":false
},
{
"setting":"webcam_only_for_moderators",
"value":true
},
{
"setting":"lock_settings_disable_note",
"value":false
},
{
"setting":"lock_settings_disable_private_chat",
"value":true
}
],
"success_message": "تم بنجاح!"
}
```
## 11. List General Meeting Settings
The API responsible for list all general meeting settings.
```http
GET /api/v1/list_general_meeting_setting/
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": [
"lock_settings_disable_cam": false,
"record": false,
"lock_settings_disable_note": false,
"lock_settings_disable_public_chat": false,
"webcam_only_for_moderators": false,
"lock_settings_disable_mic": false,
"lock_settings_locked_layout": false,
"lock_settings_disable_private_chat": false,
"allow_start_stop_recording": false,
"auto_start_recording": false
],
"success_message": "تم بنجاح!"
}
```
## 12. Get Session Recording
The API responsible for get session recording.
```http
GET /api/v1/get_record/?session_id=f7b75854-7cdc-4a4e-9888-9cfb8bb1feef
```
**Response example**
```javascript
{
"status": true,
"status_code": 200,
"message": "success",
"data": "https://vconnct-client-api.com/playback/presentation/2.3/8e3838a10f13e06cecbef7a464b86de74e66a5b8-1672672130203",
"success_message": "تم بنجاح!"
}
```
***
## Error Responses
| Key | Possible Values/Responses
| :--- | :---
| `status` | false |
| `status_code` | [400](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400) - [404](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404) - [401](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401) |
| `message` | error |
| `error_messages` | [ "error_1", "error_2", "error_3" ] |