产品指南
空间站
大数据多维表格
仪表盘
集成指南
自动化指南
企业AI智能体模板
私有化部署
开发者与扩展
最佳实践
marketing
功能参考
自动化触发器
自动化执行器
第三方集成
节点资源
数据表视图
数据表字段
仪表盘组件
智能任务
AI 向导
公式
空间站
更新日志
视频演示

OpenAPI 快速入门

欢迎使用 Bika.ai OpenAPI 快速入门指南!

本文档提供一系列示例,帮助你开始使用 Bika.ai API 和 SDK。每个部分包含常见操作的代码片段,包括获取数据、创建记录、更新记录、删除记录和使用自动化功能。

基本概念

在使用 OpenAPI 之前,我们需要首先了解 Bika.ai 的结构和对象层次结构。

  • 空间站(Space)
    • 节点资源(Node Resources):
      • 数据表(Database)
      • 自动化(Automation)
      • 仪表盘(Dashboard)
      • 文档(Document)
      • AI 聊天机器人(AI Chatbot)
      • ……

空间站是你的工作区。它包含我们前面提到的所有节点资源,包括数据表、自动化、仪表盘和其他组件。在使用 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 时可以进行便捷的面向对象编程。

前提条件

  1. Node.js 已安装在你的机器上。
  2. 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 文档.

祝你编码愉快!

bika cta

推荐阅读

推荐AI自动化模板

Eisenhower Matrix
Dwight D. Eisenhower, the 34th U.S. president and WWII's Allied Supreme Commander, also led NATO's forces. He developed the Eisenhower matrix to enhance his time management skills, making critical decisions in various roles.
Email 定时提醒
Email定时提醒是一项实用的功能,您可以设置提醒时间,在指定的日期和时间确保相关成员收到提醒邮件,以便及时处理相关事务,确保不会错过重要信息。
Employee Engagement Survey
The Employee Engagement Survey template is designed to help organizations efficiently measure employee engagement and satisfaction.This tool helps identify differences in employee experiences and supports data-driven decisions for goal setting and workplace improvement.
Employee onboarding
The Employee Onboarding Template is a customizable set of tools designed to assist enterprises in efficiently managing all aspects of the new employee onboarding process.
创业比赛管理
此模版涵盖了参赛管理的报名、数据收集、邮件通知参赛者和管理团队、评审打分等各项流程,为参赛者和主办方提供全面的支持,帮助管理者高效地管理和服务于参赛者。
Event contacts management
This template helps you organize events and contacts effectively, allowing you to log key details, expanded into a complete personal CRM for managing and nurturing your professional network.