创建和更新事件
学习如何使用 Eventbrite API 在 Eventbrite 平台上创建和更新活动。
活动的组织管理
我们可以通过 API 调用创建活动,但需要提供组织 ID。每个活动都与一个组织相关联,因此在创建活动时必须指定所属组织。当我们创建 Eventbrite 账户时,系统会自动创建一个默认组织。访问 此页面 可查看组织资料。在此页面上,我们可以上传“组织标志”,更新“组织名称”,并设置“首选国家”。
以下 URL 使用 GET 请求方法获取组织详情:
1https://www.eventbriteapi.com/v3/users/me/organizations/
该 API 调用无需输入参数,返回包含组织信息的 JSON 对象。以下是部分重要响应字段:
请求参数
| 字段 | 类型 | 描述 |
|---|---|---|
| organizations.id | 字符串 | 组织的唯一标识符 |
| organizations.name | 字符串 | 组织名称 |
通过调用 API 获取组织详情:
1const endpointUrl = new URL('https://www.eventbriteapi.com/v3/users/me/organizations/'); 2 3const headerParameters = { 4 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 5 'Content-Type': 'application/json' 6}; 7 8const options = { 9 method: 'GET', 10 headers: headerParameters, 11}; 12 13async function fetchOrganizationDetails() { 14 try { 15 const response = await fetch(endpointUrl, options); 16 printResponse(response); 17 } catch (error) { 18 printError(error); 19 } 20} 21 22// 调用函数发起 API 请求 23fetchOrganizationDetails();
上述代码中使用了 node-fetch 库来发起 API 请求,导入代码对用户隐藏。
- 第 1 行: 定义 API 端点地址。
- 第 3–6 行: 设置请求头,包含授权令牌和内容类型。
- 第 8–11 行: 配置 API 请求选项,指定请求方法为
GET并添加请求头。 - 第 13–20 行: 定义
fetchOrganizationDetails函数,使用 fetch 发起请求,并处理可能发生的异常。printResponse和printError为隐藏的自定义打印函数。 - 第 23 行: 调用
fetchOrganizationDetails函数执行请求。
创建活动
使用组织 ID 在该组织下创建活动。以下 URL 使用 POST 请求方法在组织内创建活动:
1https://www.eventbriteapi.com/v3/organizations/{organization_id}/events/
以下是创建活动所需的重要请求参数:
请求参数
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
| event.name.html | 字符串 | 是 | 以 HTML 格式表示的活动名称 |
| event.description.html | 字符串 | 是 | 以 HTML 格式表示的活动描述 |
| event.start.timezone | 字符串 | 是 | 活动开始时间所在时区 |
| event.start.utc | 字符串 | 是 | 使用 UTC 标准表示的开始时间 |
| event.end.timezone | 字符串 | 是 | 活动结束时间所在时区 |
| event.end.utc | 字符串 | 是 | 使用 UTC 标准表示的结束时间 |
| event.currency | 字符串 | 是 | 该活动使用的货币代码(ISO 4217 标准) |
| event.online_event | 布尔值 | 否 | 是否为线上活动(true 或 false) |
| event.listed | 布尔值 | 否 | 是否对公众可见(true 或 false) |
| event.shareable | 布尔值 | 否 | 是否可在社交平台分享(true 或 false) |
| event.invite_only | 布尔值 | 否 | 是否仅限邀请者查看活动页面(true 或 false) |
| event.show_remaining | 布尔值 | 否 | 是否显示剩余票数(true 或 false) |
| event.password | 字符串 | 否 | 访问活动详情所需的密码 |
| event.capacity | 整数 | 否 | 活动允许的最大人数 |
| event.venue_id | 字符串 | 否 | 活动场地 ID |
注意: 开始和结束时间必须是未来的时间。
尝试通过 API 创建一个活动:
1const endpointUrl = new URL('https://www.eventbriteapi.com/v3/organizations/{{ORGANIZATION_ID}}/events/'); 2 3const headerParameters = { 4 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 5 'Content-Type': 'application/json' 6}; 7 8const bodyParameters = JSON.stringify({ 9 "event": { 10 "name": { 11 "html": "我的活动名称" 12 }, 13 "description": { 14 "html": "活动的详细说明。" 15 }, 16 "start": { 17 "timezone": "America/Los_Angeles", 18 "utc": "2022-12-01T02:00:00Z" 19 }, 20 "end": { 21 "timezone": "America/Los_Angeles", 22 "utc": "2022-12-01T05:00:00Z" 23 }, 24 "currency": "USD" 25 } 26}); 27 28const options = { 29 method: 'POST', 30 headers: headerParameters, 31 body: bodyParameters, 32}; 33 34async function createEvent() { 35 try { 36 const response = await fetch(endpointUrl, options); 37 printResponse(response); 38 } catch (error) { 39 printError(error); 40 } 41} 42 43// 调用函数发起 API 请求 44createEvent();
- 第 1 行: 定义端点地址,并将
ORGANIZATION_ID作为 URL 参数。 - 第 3–6 行: 设置请求头,包含授权令牌和内容类型。
- 第 8–26 行: 定义创建活动所需的请求参数。
- 第 28–32 行: 配置 API 请求选项,包括请求头、请求体和请求方法
POST。 - 第 34–41 行: 定义
createEvent函数,使用 fetch 发起请求并处理异常。printResponse与printError为自定义打印函数。 - 第 44 行: 调用
createEvent函数执行请求。
该 API 调用返回一个 JSON 对象。下表解释了响应对象中的部分关键字段。该响应对象包含我们提供的所有输入参数,以及未提供时采用默认值的可选字段。
响应字段
| 字段 | 类型 | 描述 |
|---|---|---|
| response.id | 字符串 | 活动的唯一标识符 |
| response.url | 字符串 | 发布后预览活动页面的链接 |
| response.status | 字符串 | 活动状态,可能值包括:草稿(draft)、已开始(started)、已结束(ended)、已完成(completed)、已取消(canceled)或已发布(live) |
获取活动详情
若需获取特定活动的信息,可通过 event_id 获取其详细信息。以下 URL 使用 GET 请求方法获取活动数据:
1https://www.eventbriteapi.com/v3/events/{event_id}/
{event_id} 为必需的输入参数,返回包含活动详情的 JSON 对象。
1const endpointUrl = new URL('https://www.eventbriteapi.com/v3/events/{{EVENT_ID}}/'); 2 3const headerParameters = { 4 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 5 'Content-Type': 'application/json' 6}; 7 8const options = { 9 method: 'GET', 10 headers: headerParameters, 11}; 12 13async function retrieveEvent() { 14 try { 15 const response = await fetch(endpointUrl, options); 16 printResponse(response); 17 } catch (error) { 18 printError(error); 19 } 20} 21 22// 调用函数发起 API 请求 23retrieveEvent();
更新活动
通过提供 event_id 及需更新的有效字段,可以更新活动信息。
以下 URL 使用 POST 请求方法更新活动:
1https://www.eventbriteapi.com/v3/events/{event_id}/
可更新的字段与创建活动时相同,具体参考前文表格。
更新活动至少需要提供一个参数。以下示例尝试更新最近创建活动的 capacity 和 name:
1const endpointUrl = new URL('https://www.eventbriteapi.com/v3/events/{{EVENT_ID}}/'); 2 3const headerParameters = { 4 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 5 'Content-Type': 'application/json' 6}; 7 8const bodyParameters = JSON.stringify({ 9 "event": { 10 "name": { 11 "html": "活动名称已更新" 12 }, 13 "capacity": 100 14 } 15}); 16 17const options = { 18 method: 'POST', 19 headers: headerParameters, 20 body: bodyParameters, 21}; 22 23async function updateEvent() { 24 try { 25 const response = await fetch(endpointUrl, options); 26 printResponse(response); 27 } catch (error) { 28 printError(error); 29 } 30} 31 32// 调用函数发起 API 请求 33updateEvent();
- 第 1 行: 定义端点地址,
EVENT_ID作为 URL 参数。 - 第 8–15 行: 定义请求参数,包含要更新的新值。
响应返回更新后的活动对象,包含修改后的各项信息。