OpenAPI 快速入门
欢迎使用 Bika.ai OpenAPI 快速入门指南!
本文档提供一系列示例,帮助你开始使用 Bika.ai API 和 SDK。每个部分包含常见操作的代码片段,包括获取数据、创建记录、更新记录、删除记录和使用自动化功能。
基本概念
在使用 OpenAPI 之前,我们需要首先了解 Bika.ai 的结构和对象层次结构。
- 空间站(Space)
- 节点资源(Node Resources):
- 数据表(Database)
- 自动化(Automation)
- 仪表盘(Dashboard)
- 文档(Document)
- AI 聊天机器人(AI Chatbot)
- ……
- 节点资源(Node Resources):
空间站是你的工作区。它包含我们前面提到的所有节点资源,包括数据表、自动化、仪表盘和其他组件。在使用 OpenAPI 时,数据检索必须按照这种结构进行。
例如,如果你想在空间站 A 中获取由节点 B 表示的数据表 C,API 将类似于spaceA.nodeB->resoure->databaseB
.
请注意,节点 ID 等同于资源 ID;例如,节点 ID 和数据表 ID 是相同的。
对于如下 URL:
https://bika.ai/space/spcND68gdMMZBmGK67gvqNVX/node/datJubyEnetNFd3UQ6gSeq7U/viwYHuzUxRngq5igMkw9PPIX
空间站 ID:spcND68gdMMZBmGK67gvqNVX
节点 ID = 数据表 ID:datJubyEnetNFd3UQ6gSeq7U
相关的 TypeScript SDK 采用面向对象的设计风格,这大大简化了你的代码。
同样,空间站 UI 也遵循上述数据结构层。
欲了解详情,请阅读 https://bika.ai/help 上的帮助文档首页,查看空间站的整体 UI 介绍。
cURL
OpenAPI 基于 HTTP 协议,以下是使用 cURL 命令行工具调用 Bika.ai OpenAPI 的示例。
有关更多 API 详情,请查看 Bika.ai API Reference。
你可以使用任何支持这些 OpenAPI 端点的 HTTP 客户端访问它们,如 cURL、Python Requests、Node.js axios、Rust reqwest 等。
获取系统元信息
curl -X GET "https://bika.ai/api/openapi/bika/v1/system/meta" -H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
响应示例:
{
"success": true,
"code": 200,
"message": "SUCCESS",
"data": {
"version": "1.0.0-release.0",
"appEnv": "PRODUCTION",
"hostname": "https://bika.ai",
"headers": {
"X-Forwarded-For": "35.96.5.64",
"User-Agent": "curl/8.4.0"
}
}
}
获取空间站列表
curl -X GET "https://bika.ai/api/openapi/bika/v1/spaces" -H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
创建新记录
假设我们已获取到某个空间站的 ID 为 {SPACE_ID}
,节点 ID 为 {NODE_ID}
,并且数据表 ID 始终等于节点 ID。以下是创建新记录的示例:
curl -X POST "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/databases/{NODE_ID}/records" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"cells": {
"Name": "New record",
"Description": "This is a new database record"
}
}'
更新记录
假设记录 ID 为 {RECORD_ID}
,更新记录的示例如下:
curl -X PUT "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/databases/{NODE_ID}/records/{RECORD_ID}" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"fields": {
"Description": "Updated description field column"
}
}'
删除记录
curl -X DELETE "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/databases/{NODE_ID}/records/{RECORD_ID}" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
列出自动化触发器
假设节点 ID 为 {NODE_ID}
,示例如下:
curl -X GET "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/automation/{NODE_ID}/triggers" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
注册出站 Webhook
curl -X POST "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/outgoing-webhooks" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"eventType": "ON_RECORD_CREATED",
"name": "Create webhook",
"description": "Example trigger when a new record is created",
"callbackURL": "https://your - custom - callback - url.com"
}'
Python HTTP 客户端
安装依赖
首先,确保已安装 requests
库。你可以使用以下命令安装:
pip install requests
获取系统元数据
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
url = "https://bika.ai/api/openapi/bika/v1/system/meta"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.get(url, headers = headers)
print(response.json())
获取空间站列表
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
url = "https://bika.ai/api/openapi/bika/v1/spaces"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.get(url, headers = headers)
spaces = response.json()["data"]
print(spaces)
获取数据表记录
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
database_id = "{DATABASE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"fields": {
"Name": "New record",
"Description": "This is a new database record"
}
}
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json())
创建新记录
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
database_id = "{DATABASE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"cells": {
"Name": "New record",
"Description": "This is a new database record"
}
}
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json())
更新记录
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
database_id = "{DATABASE_ID}"
record_id = "{RECORD_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records/{record_id}"
headers = {
"Authorization": f"Bearer {access_token}",
"Content - Type": "application/json"
}
data = {
"fields": {
"Description": "Updated description field column"
}
}
response = requests.put(url, headers = headers, data = json.dumps(data))
print(response.json())
删除记录
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID_DATABASE_ID}"
record_id = "{RECORD_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records/{record_id}"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.delete(url, headers = headers)
print(response.json())
列出自动化触发器
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/nodes/{node_id}/automation/triggers"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.get(url, headers = headers)
triggers = response.json()["data"]
print(triggers)
注册出站 Webhook
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/outgoing-webhooks"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"eventType": "ON_RECORD_CREATED",
"name": "Create webhook",
"description": "Example trigger when a new record is created",
"callbackURL": "https://your - custom - callback - url.com"
}
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json())
通过上述 cURL 和 Python 示例,开发者可以更方便地使用 Bika.ai OpenAPI 执行各种操作。欲了解更多详细信息,请参考 Bika.ai API 文档。
TypeScript / JavaScript SDK
Bika.ai 提供官方 TypeScript/JavaScript SDK,在使用 Bika.ai OpenAPI 时可以进行便捷的面向对象编程。
前提条件
- Node.js 已安装在你的机器上。
- Bika.ai API Token: 在 Bika.ai 上注册并从用户设置中获取 API 令牌。
安装
首先,使用 npm 安装 Bika.ai SDK:
npm install bika.ai
# 或者
yarn add bika.ai
pnpm add bika.ai
示例 1:获取数据
此示例演示如何获取空间站、节点和记录。
import { Bika } from 'bika.ai';
const bika = new Bika({
token: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async <em>function</em> fetchRecords() {
try {
<em>const</em> spaces = await bika.space.list();
<em>const</em> space = spaces[0];
<em>const</em> nodes = await space.nodes.list();
<em>const</em> node = nodes.find((<em>node</em>) <em>=></em> <em>node</em>.resourceType === 'DATABASE');
<em>const</em> database = await node?.asDatabase();
<em>const</em> records = await database?.records.list();
console.log('Records:', records);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchRecords();
示例 2:创建新记录
使用此示例在数据表中创建新记录。
import { Bika } from 'bika.ai';
const bika = new Bika({
token: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async <em>function</em> createRecord() {
try {
<em>const</em> spaces = await bika.space.list();
<em>const</em> space = spaces[0];
<em>const</em> nodes = await space.nodes.list();
<em>const</em> node = nodes.find((<em>node</em>) <em>=></em> <em>node</em>.resourceType === 'DATABASE');
<em>const</em> database = await node?.asDatabase();
<em>const</em> newRecord = await database?.records.create({
cells: {
Name: 'New record',
},
});
console.log('New Record Created:', newRecord);
} catch (error) {
console.error('Error creating record:', error);
}
}
createRecord();
示例 3:更新记录
此示例更新现有记录。
import { Bika } from 'bika.ai';
const bika = new Bika({
token: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async <em>function</em> updateRecord(<em>recordId</em>: <em>string</em>) {
try {
<em>const</em> spaces = await bika.space.list();
<em>const</em> space = spaces[0];
<em>const</em> nodes = await space.nodes.list();
<em>const</em> node = nodes.find((<em>node</em>) <em>=></em> <em>node</em>.resourceType === 'DATABASE');
<em>const</em> database = await node?.asDatabase();
<em>const</em> updatedRecord = await database?.records.update({
id: <em>recordId</em>,
cells: {
Name: 'Updated Record',
},
});
console.log('Database:', database);
console.log('Record Updated:', updatedRecord);
} catch (error) {
console.error('Error updating record:', error);
}
}
updateRecord('__REPLACE_WITH_RECORD_ID__');
示例 4:删除记录
使用此示例删除特定记录。
import { Bika } from 'bika.ai';
const bika = new Bika({
token: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async <em>function</em> deleteRecord(<em>recordId</em>: <em>string</em>) {
try {
<em>const</em> spaces = await bika.space.list();
<em>const</em> space = spaces[0];
<em>const</em> nodes = await space.nodes.list();
<em>const</em> node = nodes.find((<em>node</em>) <em>=></em> <em>node</em>.resourceType === 'DATABASE');
<em>const</em> database = await node?.asDatabase();
await database?.records.delete(<em>recordId</em>);
console.log('Database:', database);
console.log('Record Deleted:', <em>recordId</em>);
} catch (error) {
console.error('Error deleting record:', error);
}
}
deleteRecord('__REPLACE_WITH_RECORD_ID__');
示例 5:列出自动化触发器
此示例展示如何列出自动化触发器。
import { Bika } from 'bika.ai';
const bika = new Bika({
token: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function listTriggers() {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const nodes = await space.nodes.list();
<em>const</em> node = nodes.find((<em>node</em>) <em>=></em> <em>node</em>.resourceType === 'AUTOMATION');
const automation = await node?.asAutomation();
const triggers = await automation?.triggers.list();
console.log('Triggers:', triggers);
} catch (error) {
console.error('Error listing triggers:', error);
}
}
listTriggers();
示例 6:注册出站 Webhook
此示例演示如何注册出站 webhook。
import { Bika } from 'bika.ai';
const bika = new Bika({
token: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function registerWebhook() {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const outgoingWebhook = await space.outgoingWebhooks.register({
eventType: 'ON_RECORD_CREATED',
name: 'Create webhook',
description: 'Exampple trigger when a new record cretaed',
callbackURL: 'https://your-custom-callback-url.com',
});
console.log('Webhook Registered:', outgoingWebhook);
} catch (error) {
console.error('Error registering webhook:', error);
}
}
registerWebhook();
示例 7:嵌入 Bika.ai 的 UI(暂不支持)
以下是将 Bika.ai 的 UI 嵌入到你自己的应用程序中的示例。
如果你想将 Bika.ai 强大的数据表、文档等 UI 集成到你的应用程序中,可以使用嵌入链接 API。
生成嵌入链接以获取 URL,然后在你的应用程序中使用 <iframe> 。
<em>import { Bika } from 'bika.ai';
const bika = new Bika({
token: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
</em><em> baseURL: '</em><em>https://bika.ai/api/openapi/bika',</em><em>
});
async function createEmbedLink(resourceId: string) {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const embedLink = await space.embedLinks.create({
objectType: 'NODE_RESOURCE',
objectId: resourceId,
});
console.log('Embed Link:', embedLink);
} catch (error) {
console.error('Error creating embed link:', error);
}
}
createEmbedLink('__NODE_RESOURCE_ID_YOU_WANT_TO_EMBED__');
// else
const embedLinks = await space.embedLink.list();
</em><em>const deleteEmbedLink = await space.embedLink.delete({id: </em><em>embedLink.id</em><em>});</em>
创建嵌入式 Bika.ai UI 后,你可以使用 <iframe> 标签在网页上显示它。以下是简单示例:
<iframe src="YOUR_EMBEDDED_UI_URL" width="800" height="600"></iframe>
将 YOUR_EMBEDDED_UI_URL
替换为你创建的嵌入式 Bika.ai UI 的实际 URL。你可以根据布局需求调整宽度和高度属性。
结论
本快速入门指南提供了基本示例,帮助你有效地与 Bika.ai OpenAPI 和 SDK 交互。你可以根据特定用例需求修改和扩展这些示例。欲了解更多详细信息,请参考 Bika.ai API 文档.
祝你编码愉快!

推荐阅读
推荐AI自动化模板





