服务端 API/视频会议/预约/预约会议
# 预约会议

创建一个会议预约。

**注意事项**：支持预约最近30天内的会议（到期时间距离当前时间不超过30天），预约到期后会议号将被释放，如需继续使用可通过"更新预约"接口进行续期；预约会议时可配置参会人在会中的权限，以达到控制会议的目的。

以此方式预约的会议「不会」生成日程，「不会」显示在日历中

## 请求

基本 | &nbsp;
---|---
HTTP URL | https://open.larksuite.com/open-apis/vc/v1/reserves/apply
HTTP Method | POST
接口频率限制 | [1000 次/分钟、50 次/秒](https://open.larksuite.com/document/ukTMukTMukTM/uUzN04SN3QjL1cDN)
支持的应用类型 | Custom App、Store App
权限要求<br>**调用该 API 所需的权限。开启其中任意一项权限即可调用** | 更新会议预约信息(vc:reserve)
字段权限要求 | **注意事项**：该接口返回体中存在下列敏感字段，仅当开启对应的权限后才会返回；如果无需获取这些字段，则不建议申请<br>获取用户 user ID(contact:user.employee_id:readonly)

### 请求头

名称 | 类型 | 必填 | 描述
---|---|---|---
Authorization | string | 是 | `tenant_access_token`<br>或<br>`user_access_token`<br>**值格式**："Bearer `access_token`"<br>**示例值**："Bearer u-7f1bcd13fc57d46bac21793a18e560"<br>[了解更多：如何选择与获取 access token](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-choose-which-type-of-token-to-use)
Content-Type | string | 是 | **固定值**："application/json; charset=utf-8"

### 查询参数

名称 | 类型 | 必填 | 描述
---|---|---|---
user_id_type | string | 否 | 用户 ID 类型<br>**示例值**：open_id<br>**可选值有**：<br>- open_id：标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。[了解更多：如何获取 Open ID](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-openid)<br>- union_id：标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的，在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID，应用开发商可以把同个用户在多个应用中的身份关联起来。[了解更多：如何获取 Union ID？](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-union-id)<br>- user_id：标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内，一个用户的 User ID 在所有应用（包括商店应用）中都保持一致。User ID 主要用于在不同的应用间打通用户数据。[了解更多：如何获取 User ID？](https://open.larksuite.com/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-obtain-user-id)<br>**默认值**：`open_id`<br>**当值为 `user_id`，字段权限要求**：<br>获取用户 user ID(contact:user.employee_id:readonly)

### 请求体

名称 | 类型 | 必填 | 描述
---|---|---|---
end_time | string | 否 | 预约到期时间（unix时间，单位sec），多人会议必填<br>**示例值**："1608888867"
owner_id | string | 否 | 指定会议归属人，使用tenant_access_token时生效且必传，使用user_access_token时不生效，必须指定为同租户下的合法Lark用户<br>**示例值**："ou_3ec3f6a28a0d08c45d895276e8e5e19b"
meeting_settings | reserve_meeting_setting | 是 | 会议设置
topic | string | 否 | 会议主题<br>**示例值**："my meeting"
action_permissions | reserve_action_permission\[\] | 否 | 会议权限配置列表，如果存在相同的权限配置项则它们之间为"逻辑或"的关系（即 有一个为true则拥有该权限）
permission | int | 是 | 权限项<br>**示例值**：1<br>**可选值有**：<br>- 1：是否能成为主持人<br>- 2：是否能邀请参会人<br>- 3：是否能加入会议
permission_checkers | reserve_permission_checker\[\] | 是 | 权限检查器列表，权限检查器之间为"逻辑或"的关系（即 有一个为true则拥有该权限）
check_field | int | 是 | 检查字段类型<br>**示例值**：1<br>**可选值有**：<br>- 1：用户ID（check_list填入用户ID）<br>- 2：用户类型（check_list可选值有 <br>"1"：Lark用户、<br>"2"：rooms用户、<br>"6"：pstn用户、<br>"7"：sip用户）<br>- 3：租户ID（check_list填入租户tenant_key）
check_mode | int | 是 | 检查方式<br>**示例值**：1<br>**可选值有**：<br>- 1：在check_list中为有权限（白名单）<br>- 2：不在check_list中为有权限（黑名单）
check_list | string\[\] | 是 | 检查字段列表（根据check_field的类型填入对应内容）<br>**示例值**：["ou_3ec3f6a28a0d08c45d895276e8e5e19b"]
meeting_initial_type | int | 否 | 会议初始类型<br>**示例值**：1<br>**可选值有**：<br>- 1：多人会议<br>- 2：1v1呼叫(仅支持预约PSTN用户)
call_setting | reserve_call_setting | 否 | 1v1呼叫相关参数
callee | reserve_callee | 是 | 被呼叫的用户
id | string | 否 | 用户ID<br>**示例值**："ou_3ec3f6a28a0d08c45d895276e8e5e19b"
user_type | int | 是 | 用户类型，当前仅支持用户类型6(pstn用户)<br>**示例值**：1<br>**可选值有**：<br>- 1：Lark用户<br>- 2：rooms用户<br>- 3：文档用户<br>- 4：neo单品用户<br>- 5：neo单品游客用户<br>- 6：pstn用户<br>- 7：sip用户
pstn_sip_info | pstn_sip_info | 否 | pstn/sip信息
nickname | string | 否 | 给pstn/sip用户设置的临时昵称<br>**示例值**："dodo"
main_address | string | 是 | pstn/sip主机号，格式为：[国际冠字]-[电话区号][电话号码]，当前仅支持国内手机及固定电话号码<br>**示例值**："+86-02187654321"
auto_record | boolean | 否 | 使用Lark视频会议时，是否开启自动录制，默认false<br>**示例值**：true
assign_host_list | reserve_assign_host\[\] | 否 | 指定主持人列表
user_type | int | 否 | 用户类型，仅支持设置同租户下的 Lark 用户<br>**示例值**：1<br>**可选值有**：<br>- 1：Lark用户
id | string | 否 | 用户ID<br>**示例值**："ou_3ec3f6a28a0d08c45d895276e8e5e19b"

### 请求体示例
```json
{
    "end_time": "1608888867",
    "owner_id": "ou_3ec3f6a28a0d08c45d895276e8e5e19b",
    "meeting_settings": {
        "topic": "my meeting",
        "action_permissions": [
            {
                "permission": 1,
                "permission_checkers": [
                    {
                        "check_field": 1,
                        "check_mode": 1,
                        "check_list": [
                            "ou_3ec3f6a28a0d08c45d895276e8e5e19b"
                        ]
                    }
                ]
            }
        ],
        "meeting_initial_type": 1,
        "call_setting": {
            "callee": {
                "id": "ou_3ec3f6a28a0d08c45d895276e8e5e19b",
                "user_type": 1,
                "pstn_sip_info": {
                    "nickname": "dodo",
                    "main_address": "+86-02187654321"
                }
            }
        },
        "auto_record": true,
        "assign_host_list": [
            {
                "user_type": 1,
                "id": "ou_3ec3f6a28a0d08c45d895276e8e5e19b"
            }
        ]
    }
}
```

## 响应

### 响应体

名称 | 类型 | 描述
---|---|---
code | int | 错误码，非 0 表示失败
msg | string | 错误描述
data | \- | \-
reserve | reserve | 预约数据
id | string | 预约ID（预约的唯一标识，非会议ID，会议ID仅在会议开始后才生成）
meeting_no | string | 9位会议号（Lark用户可通过输入9位会议号快捷入会）
url | string | 会议链接（Lark用户可通过点击会议链接快捷入会）
app_link | string | APPLink用于唤起LarkAPP入会。"{?}"为占位符，用于配置入会参数，使用时需替换具体值：0表示关闭，1表示打开。preview为入会前的设置页，mic为麦克风，speaker为扬声器，camera为摄像头
live_link | string | 会议转直播链接
end_time | string | 预约到期时间（unix时间，单位sec）
reserve_correction_check_info | reserve_correction_check_info | 预约参数检查信息
invalid_host_id_list | string\[\] | 指定主持人无效id列表

### 响应体示例
```json
{
    "code": 0,
    "msg": "success",
    "data": {
        "reserve": {
            "id": "6911188411934973028",
            "meeting_no": "112000358",
            "url": "https://vc.larksuite.com/j/337736498",
            "app_link": "https://applink.larksuite.com/client/videochat/open?source=openplatform&action=join&idtype=reservationid&id={?}&preview={?}&mic={?}&speaker={?}&camera={?}",
            "live_link": "https://meetings.larksuite.com/s/1gub381l4gglv",
            "end_time": "1608883322"
        },
        "reserve_correction_check_info": {
            "invalid_host_id_list": [
                "ou_3ec3f6a28a0d08c45d895276e8e5e19b"
            ]
        }
    }
}
```

### 错误码

HTTP状态码 | 错误码 | 描述 | 排查建议
---|---|---|---
500 | 121001 | internal error | 服务器内部错误，如果重试无效可联系管理员
400 | 121002 | not support | 暂不支持该功能
400 | 121003 | param error | 参数错误，检查参数的取值范围（请按照上面字段说明自查）
400 | 123002 | record param error | 录制参数错误，1v1呼叫暂不支持自动录制
400 | 123003 | assign host exceed max limit 10 | 指定主持人数量超过最大限制，上限10
400 | 123004 | assign host error | 指定主持人错误，检查id是否合法

