创建和更新事件
学习如何使用 Eventbrite 平台的 API 创建和更新活动。
获取组织的 ID
我们可以使用 API 调用从零开始创建一个活动。为此,我们首先需要一个组织 ID。每个活动都与一个组织相关联,我们需要为活动指定所属的组织。在创建 Eventbrite 账户时会自动创建一个默认组织。点击此处查看组织资料。我们可以上传“组织标志”,更新“组织名称”,并设置“首选国家”。
以下 URL 使用 GET 方法获取组织的详细信息:
1https://www.eventbriteapi.com/v3/users/me/organizations/
此 API 调用不接受任何输入参数,返回包含组织详情的 JSON 对象。以下是几个重要的响应参数:
| 对象 | 类型 | 描述 |
|---|---|---|
| organizations.id | 字符串 | 该对象提供组织的唯一 ID。 |
| organizations.name | 字符串 | 该对象提供组织的名称。 |
接下来,我们调用 API 获取组织详情:
1import requests 2import json 3 4url = 'https://www.eventbriteapi.com/v3/users/me/organizations/' 5 6headers = { 7 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 8 'Content-Type': 'application/json' 9} 10 11response = requests.request("GET", url, headers=headers).json() 12print(json.dumps(response, indent=4))
上述 API 调用将返回 JSON 对象,其中 organizations 内部的 id 属性即为组织的 ID。
创建活动
现在我们使用获取到的组织 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 货币代码。 |
注意: 开始和结束日期必须是未来的时间。
响应参数
上述 API 调用返回一个 JSON 对象。下表解释了响应对象中一些重要属性。该响应对象包含所有提供的输入参数以及可选参数,其值设为默认值。
| 对象 | 类型 | 描述 |
|---|---|---|
| response.id | 字符串 | 该对象表示活动的唯一 ID。 |
| response.url | 字符串 | 该对象提供活动预览页面的 URL,用于发布后查看活动页面。 |
| response.status | 字符串 | 该对象表示活动的状态,可能为 draft(草稿)、started(已开始)、ended(已结束)、completed(已完成)、canceled(已取消)或 live(已发布)。 |
让我们调用 API 来创建一个活动:
1import requests 2import json 3 4url = 'https://www.eventbriteapi.com/v3/organizations/{{ORGANIZATION_ID}}/events/' 5 6headers = { 7 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 8 'Content-Type': 'application/json' 9} 10 11values = json.dumps({ 12 "event": { 13 "name": { 14 "html": "我的活动名称" 15 }, 16 "description": { 17 "html": "活动的详细描述。" 18 }, 19 "start": { 20 "timezone": "America/Los_Angeles", 21 "utc": "2022-12-01T02:00:00Z" 22 }, 23 "end": { 24 "timezone": "America/Los_Angeles", 25 "utc": "2022-12-01T05:00:00Z" 26 }, 27 "currency": "USD" 28 } 29 }) 30 31response = requests.request("POST", url, headers=headers, data=values).json() 32print(json.dumps(response, indent=4))
获取活动信息
若要获取特定活动的信息,需使用 event_id 来检索活动详情。以下 URL 使用 GET 方法获取活动信息:
1https://www.eventbriteapi.com/v3/events/{event_id}/
{event_id} 是必需的输入参数,返回包含活动详情的 JSON 对象。
1import requests 2import json 3 4url = 'https://www.eventbriteapi.com/v3/events/{{EVENT_ID}}/' 5 6headers = { 7 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 8 'Content-Type': 'application/json' 9} 10 11response = requests.request("GET", url, headers=headers).json() 12print(json.dumps(response, indent=4))
更新活动
我们可以通过提供 event_id 以及要更新的有效属性来更新活动。
以下 URL 使用 POST 方法更新活动:
1https://www.eventbriteapi.com/v3/events/{event_id}/
请求参数
以下是一些重要输入参数:
| 对象 | 类型 | 类别 | 描述 |
|---|---|---|---|
| name | 多部分文本 | 可选 | 表示要更新的活动名称。 |
| summary | 字符串 | 可选 | 更新活动摘要。 |
| description | 多部分文本 | 可选 | 提供要更新的活动描述。 |
| url | 字符串 | 可选 | 表示要更新的新 URL。 |
| start | 日期时间(带时区) | 可选 | 表示活动新的开始日期和时间。 |
| end | 日期时间(带时区) | 可选 | 表示活动新的结束日期和时间。 |
| currency | 字符串 | 可选 | 表示新的货币类型。 |
| online_event | 布尔值 | 可选 | 表示活动是否为线上活动,取值为 true 或 false。 |
| listed | 布尔值 | 可选 | 表示活动是否对公众可搜索,取值为 true 或 false。 |
| shareable | 布尔值 | 可选 | 表示活动是否可在社交网站上分享,取值为 true 或 false。 |
| invite_only | 布尔值 | 可选 | 确保只有受邀者才能查看活动页面,取值为 true 或 false。 |
| show_remaining | 布尔值 | 可选 | 表示是否显示剩余票数,取值为 true 或 false。 |
| password | 字符串 | 可选 | 设置访问活动详情所需的密码。 |
| capacity | 整数 | 可选 | 表示活动允许的新容量值。 |
| venue_id | 字符串 | 可选 | 表示活动的新场地 ID。 |
更新活动时,必须至少提供一个参数。响应将是一个包含更新后值的活动对象。
下面我们尝试更新之前创建的活动的 capacity 和 name:
1import requests 2import json 3 4url = 'https://www.eventbriteapi.com/v3/events/{{EVENT_ID}}/' 5 6headers = { 7 'Authorization': 'Bearer {{PRIVATE_TOKEN}}', 8 'Content-Type': 'application/json' 9} 10 11values = json.dumps({ 12 "event": { 13 "name": { 14 "html": "活动名称已更新" 15 }, 16 "capacity": 100 17 } 18}) 19 20response = requests.request("POST", url, headers=headers, data=values).json() 21print(json.dumps(response, indent=4))