# Meetings

## Get All Meetings

## Get List of Meetings

<mark style="color:blue;">`GET`</mark> `https://api.pyas.io/zoom/meetings`

Gets all meetings for an account

#### Query Parameters

| Name                                        | Type        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| accountId<mark style="color:red;">\*</mark> | String      | The user's Pyas account id. This is returned when you connect an account to Pyas.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| startDate                                   | Date String | <p>Filter meetings from a start date </p><p>(ex: <code>01-01-2022</code>)</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| endDate                                     | Date String | <p>Filter meetings up to an end date</p><p>(ex: <code>01-01-2023</code>)</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| nextPageToken                               | String      | Token string used to get the next page of results (paginate) - This token expires after 15 minutes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| maxResults                                  | Integer     | Max number of results to return per page                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| type                                        | String      | <p>Type of meeting. Possible values are: <mark style="color:blue;"><code>scheduled</code></mark> - All valid previous (unexpired) meetings, live meetings, and upcoming scheduled meetings.</p><p></p><p><mark style="color:blue;"><code>live</code></mark> - All the ongoing meetings.</p><p></p><p><mark style="color:blue;"><code>upcoming</code></mark> - All upcoming meetings, including live meetings.</p><p></p><p><mark style="color:blue;"><code>upcoming\_meetings</code></mark> - All upcoming meetings, including live meetings.</p><p></p><p><mark style="color:blue;"><code>previous\_meetings</code></mark> - All the previous meetings.</p> |
| pageNumber                                  | Integer     | The page number of the current page in the returned records.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

#### Headers

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| x-api-key<mark style="color:red;">\*</mark> | String | API key     |

{% tabs %}
{% tab title="200: OK Successfully retrieved meetings" %}

```json
{
    "success": true,
    "data": {
        "page_size": 30,
        "total_records": 1,
        "next_page_token": "",
        "meetings": [
            {
                "uuid": "some-uuid-string",
                "id": 3418139842191568,
                "host_id": "some-id-string",
                "topic": "Test Meeting",
                "type": 2,
                "start_time": "2023-04-26T19:26:55Z",
                "duration": 30,
                "timezone": "America/Los_Angeles",
                "agenda": "This is an example meeting",
                "created_at": "2023-04-26T12:26:57Z",
                "join_url": "https://us05web.zoom.us/j/81398421915?pwd=Zk9WTzM3SG9Xb1lCZk9MTVFhOU1Fdz09"
            }
        ]
    }
}
```

{% endtab %}

{% tab title="401: Unauthorized Invalid/missing API key" %}

```json
{
    "error": "Unauthorized. Invalid API key."
}
```

{% endtab %}

{% tab title="400: Bad Request Missing calendar id" %}

```json
{
    "errors": [
        {
            "msg": "a calendar id is required.",
            "param": "calendarId",
            "location": "query"
        }
    ]
}
```

{% endtab %}

{% tab title="400: Bad Request Missing account id" %}

```json
{
    "errors": [
        {
            "msg": "an account id is required.",
            "param": "accountId",
            "location": "query"
        }
    ]
}
```

{% endtab %}

{% tab title="400: Bad Request Missing both calendar id and account id" %}

```json
{
    "errors": [
        {
            "msg": "an account id is required.",
            "param": "accountId",
            "location": "query"
        },
        {
            "msg": "a calendar id is required.",
            "param": "calendarId",
            "location": "query"
        }
    ]
}
```

{% endtab %}

{% tab title="404: Not Found Account Not Found. Invalid accountId" %}

```json
{
    "success": false,
    "error": "Invalid account id. Account Not Found",
    "code": 404
}
```

{% endtab %}

{% tab title="404: Not Found Calendar Not Found" %}

```json
{
    "success": false,
    "error": "Not Found",
    "code": 404
}
```

{% endtab %}
{% endtabs %}

## Get an Event By ID

## Get Event by ID

<mark style="color:blue;">`GET`</mark> `https://api.pyas.io/zoom/meetings/:id`

Gets a calendar event by id

#### Path Parameters

| Name                                   | Type   | Description    |
| -------------------------------------- | ------ | -------------- |
| {id}<mark style="color:red;">\*</mark> | String | The meeting id |

#### Query Parameters

| Name                                        | Type   | Description                                                                       |
| ------------------------------------------- | ------ | --------------------------------------------------------------------------------- |
| accountId<mark style="color:red;">\*</mark> | String | The user's Pyas account id. This is returned when you connect an account to Pyas. |

#### Headers

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| x-api-key<mark style="color:red;">\*</mark> | String | API key     |

{% tabs %}
{% tab title="200: OK Successfully retrieved the meeting" %}

```json
{
    "success": true,
    "meeting": {
        "uuid": "some-uuid-string",
        "id": 181328421905,
        "host_id": "some-id-string",
        "host_email": "user@example.com",
        "assistant_id": "",
        "topic": "Test Meeting",
        "type": 2,
        "status": "waiting",
        "start_time": "2023-04-26T19:26:55Z",
        "duration": 30,
        "timezone": "America/Los_Angeles",
        "agenda": "This is an example meeting",
        "created_at": "2023-04-26T12:26:57Z",
        "start_url": "https://us05web.zoom.us/s/8139...",
        "join_url": "https://us05web.zoom.us/j/81398...",
        "password": "f0a9n07bk3",
        "h323_password": "7214044450",
        "pstn_password": "7214044450",
        "encrypted_password": "Zk9WTzM3SG9Xb1lCZk9MTVFhOU1Fdz09",
        "settings": {
            "host_video": false,
            "participant_video": false,
            "cn_meeting": false,
            "in_meeting": false,
            "join_before_host": false,
            "jbh_time": 0,
            "mute_upon_entry": false,
            "watermark": false,
            "use_pmi": false,
            "approval_type": 2,
            "audio": "voip",
            "auto_recording": "none",
            "enforce_login": false,
            "enforce_login_domains": "",
            "alternative_hosts": "",
            "alternative_host_update_polls": false,
            "close_registration": false,
            "show_share_button": false,
            "allow_multiple_devices": false,
            "registrants_confirmation_email": true,
            "waiting_room": true,
            "request_permission_to_unmute_participants": false,
            "registrants_email_notification": true,
            "meeting_authentication": false,
            "encryption_type": "enhanced_encryption",
            "approved_or_denied_countries_or_regions": {
                "enable": false
            },
            "breakout_room": {
                "enable": false
            },
            "alternative_hosts_email_notification": true,
            "show_join_info": false,
            "device_testing": false,
            "focus_mode": false,
            "enable_dedicated_group_chat": false,
            "private_meeting": false,
            "email_notification": true,
            "host_save_video_order": false
        },
        "pre_schedule": false
    }
}
```

{% endtab %}

{% tab title="401: Unauthorized Invalid/Missing API key" %}

```json
{
    "error": "Unauthorized. Invalid API key."
}
```

{% endtab %}

{% tab title="400: Bad Request Missing fields" %}

```json
{
    "errors": [
        {
            "msg": "account id is required",
            "param": "accountId",
            "location": "query"
        },
        {
            "msg": "account id must be a string",
            "param": "accountId",
            "location": "query"
        }
    ]
}
```

{% endtab %}

{% tab title="404: Not Found Account Not Found. Invalid accountId" %}

```json
{
    "success": false,
    "error": "Invalid account id. Account Not Found",
    "code": 404
}
```

{% endtab %}
{% endtabs %}

##

## Create a Meeting

## Create Meeting

<mark style="color:green;">`POST`</mark> `https://api.pyas.io/zoom/meetings`

Creates a new Zoom Meeting

#### Headers

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| x-api-key<mark style="color:red;">\*</mark> | String | API key     |

#### Request Body

| Name                                                      | Type     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| --------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accountId<mark style="color:red;">\*</mark>               | String   | The user's Pyas account id. This is returned when you connect an account to Pyas.                                                                                                                                                                                                                                                                                                                                                                        |
| meetingData<mark style="color:red;">\*</mark>             | Object   | The event data. See the Required [**Meeting Data Object**](#meeting-data-object) example below.                                                                                                                                                                                                                                                                                                                                                          |
| meetingData.title<mark style="color:red;">\*</mark>       | String   | The meeting title/topic                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| meetingData.description<mark style="color:red;">\*</mark> | String   | Meeting description/agenda                                                                                                                                                                                                                                                                                                                                                                                                                               |
| meetingData.startDate<mark style="color:red;">\*</mark>   | DateTime | RFC3339 Timestamp                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| meetingData.timeZone                                      | String   | Time Zone in IANA format. Only used for scheduled or recurring meetings with a fixed time                                                                                                                                                                                                                                                                                                                                                                |
| meetingData.attendees                                     | Array    | Array of [**Attendee Objects**](#attendee-object-example)                                                                                                                                                                                                                                                                                                                                                                                                |
| meetingData.recurrence                                    | Object   | Recurrence object for recurring events. See the [**Recurrence Object**](#recurrence-object) below.                                                                                                                                                                                                                                                                                                                                                       |
| meetingData.duration                                      | Integer  | The meeting duration in minutes. Only used for scheduled meetings. Defaults to **30**                                                                                                                                                                                                                                                                                                                                                                    |
| meetingData.waitingRoom                                   | Boolean  | Whether to enable or disable the waiting room                                                                                                                                                                                                                                                                                                                                                                                                            |
| meetingData.type<mark style="color:red;">\*</mark>        | Integer  | <p>Type of meeting:</p><p><mark style="color:blue;"><strong><code>1</code></strong></mark>  - An instant meeting</p><p><mark style="color:blue;"><strong><code>2</code></strong></mark>  - A scheduled meeting</p><p><mark style="color:blue;"><strong><code>3</code></strong></mark>  - A recurring meeting with no fixed time</p><p><mark style="color:blue;"><strong><code>8</code></strong></mark>  - A recurring meeting with fixed time</p><p></p> |

{% tabs %}
{% tab title="200: OK Meeting created successfully" %}

```json
{
    "success": true,
    "data": {
        "uuid": "some-uuid-string",
        "id": 2589906727501,
        "host_id": "some-id-string",
        "host_email": "email@example.com",
        "topic": "Test Meeting",
        "type": 2,
        "status": "waiting",
        "start_time": "2023-04-26T19:51:48Z",
        "duration": 30,
        "timezone": "America/Los_Angeles",
        "agenda": "This is an example meeting",
        "created_at": "2023-04-26T12:51:49Z",
        "start_url": "https://us05web.zoom.us/s/85256...",
        "join_url": "https://us05web.zoom.us/j/8965...",
        "password": "aeknj5fia0",
        "h323_password": "4023135285",
        "pstn_password": "4023135285",
        "encrypted_password": "YmJva3V5TlpZMDQ1SzJZOUNCemUrQT09",
        "settings": {
            "host_video": false,
            "participant_video": false,
            "cn_meeting": false,
            "in_meeting": false,
            "join_before_host": false,
            "jbh_time": 0,
            "mute_upon_entry": false,
            "watermark": false,
            "use_pmi": false,
            "approval_type": 2,
            "audio": "voip",
            "auto_recording": "none",
            "enforce_login": false,
            "enforce_login_domains": "",
            "alternative_hosts": "",
            "alternative_host_update_polls": false,
            "close_registration": false,
            "show_share_button": false,
            "allow_multiple_devices": false,
            "registrants_confirmation_email": true,
            "waiting_room": true,
            "request_permission_to_unmute_participants": false,
            "registrants_email_notification": true,
            "meeting_authentication": false,
            "encryption_type": "enhanced_encryption",
            "approved_or_denied_countries_or_regions": {
                "enable": false
            },
            "breakout_room": {
                "enable": false
            },
            "alternative_hosts_email_notification": true,
            "show_join_info": false,
            "device_testing": false,
            "focus_mode": false,
            "enable_dedicated_group_chat": false,
            "private_meeting": false,
            "email_notification": true,
            "host_save_video_order": false
        },
        "pre_schedule": false
    }
}
```

{% endtab %}

{% tab title="401: Unauthorized Invalid/Missing API key" %}

```json
{
    "error": "Unauthorized. Invalid API key."
}
```

{% endtab %}

{% tab title="404: Not Found Account Not Found. Invalid accountId" %}

```json
{
    "success": false,
    "error": "Invalid account id. Account Not Found",
    "code": 404
}
```

{% endtab %}

{% tab title="400: Bad Request Missing required fields" %}

```json
{
    "errors": [
        {
            "msg": "meetingData is required.",
            "param": "meetingData",
            "location": "body"
        },
        {
            "msg": "meetingData must be an object",
            "param": "meetingData",
            "location": "body"
        },
        {
            "msg": "Invalid value",
            "param": "meetingData",
            "location": "body"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

### **Meeting Data Object**

```json
{
    "accountId": "123654-46204525-b574-9ad72ae18c9e", // string - Required.
    "meetingData": {
        "type": 2, // Integer - Required.
        "title": "Test Meeting", // string - Required.
        "description": "This is an example meeting", // string - Required.
        "startDate": "{{start_time}}", // RFC3339 Timestamp - Required.
        "duration": 30, // Integer - Required.
        "waitingRoom": true, // Boolean - Optional.
        "attendees": [
            {
                "email": "example@gmail.com"
            }
            
        ] // Required.
        
    }
}
```

### Attendee Object Example:

```json
{
    "email": "example@gmail.com" // String - Required.
}
```

### Recurrence Object:

```typescript
{
    type: string // daily, weekly, or monthly - Required.
    interval: number|string // Define the interval at which the meeting should recur. (ex. 2 for every two weeks with type of weekly) - Required.
    startDate?: string // the dateTime of when the recurring meeting will start (used for Microsoft Outlook only)
    endDate?: string // the dateTime of when the recurring meeting will end
    dayOfMonth?: number|string // day of month for a monthly meeting. 1 - 31 (ex. 15 for the 15th of every month)
    daysOfWeek?: Array<string> // days of week for a weekly meeting type (ex. ['monday', 'wednesday'])
    month?: number|string // The month in which the event occurs. This is a number from 1 to 12. (Microsoft and Google only)
}
```

Here's an example of a recurrence object for a meeting that repeats weekly every Wednesday:

<pre class="language-json"><code class="lang-json">{
<strong>    "type": "weekly",
</strong><strong>    "interval": 1,
</strong>    "daysOfWeek": ["wednesday"],
    "endDate": "2023-08-01T22:26:39.109Z"
}
</code></pre>

## Update a Meeting

## Update Meeting

<mark style="color:purple;">`PATCH`</mark> `https://api.pyas.io/zoom/meetings/:id`

Updates an Existing Meeting

#### Path Parameters

| Name                                   | Type   | Description    |
| -------------------------------------- | ------ | -------------- |
| {id}<mark style="color:red;">\*</mark> | String | The meeting ID |

#### Headers

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| x-api-key<mark style="color:red;">\*</mark> | String | API Key     |

#### Request Body

| Name                                          | Type   | Description                                                                                                                               |
| --------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| accountId<mark style="color:red;">\*</mark>   | String | The user's Pyas account id. This is returned when you connect an account to Pyas.                                                         |
| meetingData<mark style="color:red;">\*</mark> | Object | Event data object with the fields to update. See the [**Example Update Meeting Data Object**](#update-meeting-data-object-example) below. |

{% tabs %}
{% tab title="204: No Content Meeting updated successfully" %}

{% endtab %}

{% tab title="404: Not Found Account Not Found/Invalid Account Id" %}

```json
{
    "success": false,
    "error": "Invalid account id. Account Not Found",
    "code": 404
}
```

{% endtab %}

{% tab title="400: Bad Request Missing eventData" %}

```json
{
    "errors": [
        {
            "msg": "meetingData is required.",
            "param": "meetingData",
            "location": "body"
        },
        {
            "msg": "meetingData must be an object",
            "param": "meetingData",
            "location": "body"
        },
        {
            "msg": "Invalid value",
            "param": "meetingData",
            "location": "body"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

### Update Meeting Data Object Example:

```json
{
    "title": "Test Meeting - Updated",
    "description": "This is an example meeting - updated",
    "duration": 30,
    "waitingRoom": true,
    "attendees": [
        {
            "email": "example@gmail.com"
        }
            
    ]
        
}
```

## Delete a Meeting

## Delete Meeting

<mark style="color:red;">`DELETE`</mark> `https://api.pyas.io/zoom/meetings/:id`

Deletes an existing meeting

#### Path Parameters

| Name                                   | Type   | Description    |
| -------------------------------------- | ------ | -------------- |
| {id}<mark style="color:red;">\*</mark> | String | The meeting ID |

#### Query Parameters

| Name                                        | Type   | Description                                                                       |
| ------------------------------------------- | ------ | --------------------------------------------------------------------------------- |
| accountId<mark style="color:red;">\*</mark> | String | The user's Pyas account id. This is returned when you connect an account to Pyas. |

#### Headers

| Name                                        | Type   | Description |
| ------------------------------------------- | ------ | ----------- |
| x-api-key<mark style="color:red;">\*</mark> | String | API Key     |

{% tabs %}
{% tab title="204: No Content Meeting was deleted successfully" %}

```javascript
{
    // Response
}
```

{% endtab %}
{% endtabs %}
