Office

No-code data tables (Base/Bitable) and approval flows (Approval).

10 endpoints · base /api/v1/office

POST/api/v1/office/tables/{id}/records/listTry it ▶

List records in a table.

MCP tool: office_list_recordsScope: office.base.record.viewAPI key / app

Parameter

ParameterTypeInRequiredDescription
Idempotency-Key NewstringheadernoA value you generate for EACH write (e.g. a UUID), up to 200 characters. Resending the same value within 24 hours returns the original result instead of creating a second record. Same value with a different body ⇒ 422.
idGUIDpathyesTable id
pageintbodyno—
pageSizeintbodynoRows per page

Example

curl -X POST https://api.nextx.vn/api/v1/office/tables/<id>/records/list \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Idempotency-Key: 7f3c2a90-…" \
  -H "Content-Type: application/json" \
  -d '{
    "page": 1,
    "pageSize": 1
  }'

Sample response

Response schema is being synced from source.

GET/api/v1/office/tables/{id}/records/{recordId}Try it ▶

Details of one record.

MCP tool: office_get_recordScope: office.base.record.viewAPI key / app

Parameter

ParameterTypeInRequiredDescription
idGUIDpathyesTable id
recordIdGUIDpathyes—

Example

curl https://api.nextx.vn/api/v1/office/tables/<id>/records/<recordId> \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Sample response

Response schema is being synced from source.

POST/api/v1/office/tables/{id}/recordsTry it ▶

Create a record.

MCP tool: office_create_recordScope: office.base.record.manageAPI key / app

Parameter

ParameterTypeInRequiredDescription
Idempotency-Key NewstringheadernoA value you generate for EACH write (e.g. a UUID), up to 200 characters. Resending the same value within 24 hours returns the original result instead of creating a second record. Same value with a different body ⇒ 422.
idGUIDpathyesTable id
dataobjectbodyyesField values keyed by field_id

Example

curl -X POST https://api.nextx.vn/api/v1/office/tables/<id>/records \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Idempotency-Key: 7f3c2a90-…" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {}
  }'

Sample response

Response schema is being synced from source.

PUT/api/v1/office/tables/{id}/records/{recordId}Try it ▶

Update a record.

MCP tool: office_update_recordScope: office.base.record.manageAPI key / app

Parameter

ParameterTypeInRequiredDescription
Idempotency-Key NewstringheadernoA value you generate for EACH write (e.g. a UUID), up to 200 characters. Resending the same value within 24 hours returns the original result instead of creating a second record. Same value with a different body ⇒ 422.
idGUIDpathyesTable id
recordIdGUIDpathyes—
dataobjectbodyyes—
replaceboolbodynotrue = overwrite everything

Example

curl -X PUT https://api.nextx.vn/api/v1/office/tables/<id>/records/<recordId> \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Idempotency-Key: 7f3c2a90-…" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {},
    "replace": false
  }'

Sample response

Response schema is being synced from source.

DELETE/api/v1/office/tables/{id}/records/{recordId}Try it ▶

Delete a record.

MCP tool: office_delete_recordScope: office.base.record.manageAPI key / app

Parameter

ParameterTypeInRequiredDescription
idGUIDpathyesTable id
recordIdGUIDpathyes—

Example

curl -X DELETE https://api.nextx.vn/api/v1/office/tables/<id>/records/<recordId> \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Sample response

Response schema is being synced from source.

GET/api/v1/office/approvals/instancesTry it ▶

List approval requests.

MCP tool: office_list_approval_instancesScope: office.approval.instance.viewUser OAuthAPI key / app

Parameter

ParameterTypeInRequiredDescription
rolestringquerynoRequest scope; default mine (requests submitted by the caller)
pageintqueryno—
pageSizeintquerynoRows per page

Example

curl https://api.nextx.vn/api/v1/office/approvals/instances?role=...&page=1&pageSize=1 \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Sample response

{
  "items": [
    {
      "id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "definitionId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "definitionCode": "string",
      "applicantId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "status": "string",
      "formValue": "string",
      "currentNodeId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "enrollmentId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "createdAt": "2026-10-27T09:00:00+07:00",
      "definitionName": "string",
      "myPendingTaskId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b"
    }
  ],
  "totalCount": 0,
  "page": 0,
  "pageSize": 0,
  "totalPages": 0,
  "hasNextPage": false,
  "hasPreviousPage": false
}
GET/api/v1/office/approvals/instances/{id}Try it ▶

Approval request details.

MCP tool: office_get_approval_instanceScope: office.approval.instance.viewUser OAuthAPI key / app

Parameter

ParameterTypeInRequiredDescription
idGUIDpathyes—

Example

curl https://api.nextx.vn/api/v1/office/approvals/instances/<id> \
  -H "Authorization: Bearer <ACCESS_TOKEN>"

Sample response

{
  "instance": {
    "id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
    "definitionId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
    "definitionCode": "string",
    "applicantId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
    "status": "string",
    "formValue": "string",
    "currentNodeId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
    "enrollmentId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
    "createdAt": "2026-10-27T09:00:00+07:00",
    "definitionName": "string",
    "myPendingTaskId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b"
  },
  "tasks": [
    {
      "id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "instanceId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "nodeId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "approverId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "status": "string",
      "taskKind": "string",
      "comment": "string",
      "actedAt": "2026-10-27T09:00:00+07:00",
      "originTaskId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "position": 0,
      "dueAt": "2026-10-27T09:00:00+07:00",
      "escalatedAt": "2026-10-27T09:00:00+07:00",
      "delegatedForUserId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b"
    }
  ],
  "timeline": [
    {
      "id": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "taskId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "action": "string",
      "actorId": "0199a1b2-c3d4-7e5f-8a9b-0c1d2e3f4a5b",
      "comment": "string",
      "createdAt": "2026-10-27T09:00:00+07:00"
    }
  ]
}
POST/api/v1/office/approvals/instancesTry it ▶

Create an approval request from a template.

MCP tool: office_create_approval_instanceScope: office.approval.instance.manageUser OAuthAPI key / app

Parameter

ParameterTypeInRequiredDescription
Idempotency-Key NewstringheadernoA value you generate for EACH write (e.g. a UUID), up to 200 characters. Resending the same value within 24 hours returns the original result instead of creating a second record. Same value with a different body ⇒ 422.
definitionCodestringbodyyesApproval template code
formValuestringbodynoForm values (JSON string)

Example

curl -X POST https://api.nextx.vn/api/v1/office/approvals/instances \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Idempotency-Key: 7f3c2a90-…" \
  -H "Content-Type: application/json" \
  -d '{
    "definitionCode": "...",
    "formValue": "..."
  }'

Sample response

null
POST/api/v1/office/approvals/tasks/{taskId}/approveTry it ▶

Approve one approval task.

MCP tool: office_approve_taskScope: office.approval.instance.manageUser OAuthAPI key / app

Parameter

ParameterTypeInRequiredDescription
Idempotency-Key NewstringheadernoA value you generate for EACH write (e.g. a UUID), up to 200 characters. Resending the same value within 24 hours returns the original result instead of creating a second record. Same value with a different body ⇒ 422.
taskIdGUIDpathyes—
commentstringbodyno—

Example

curl -X POST https://api.nextx.vn/api/v1/office/approvals/tasks/<taskId>/approve \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Idempotency-Key: 7f3c2a90-…" \
  -H "Content-Type: application/json" \
  -d '{
    "comment": "..."
  }'

Sample response

Response schema is being synced from source.

POST/api/v1/office/approvals/tasks/{taskId}/rejectTry it ▶

Reject one approval task.

MCP tool: office_reject_taskScope: office.approval.instance.manageUser OAuthAPI key / app

Parameter

ParameterTypeInRequiredDescription
Idempotency-Key NewstringheadernoA value you generate for EACH write (e.g. a UUID), up to 200 characters. Resending the same value within 24 hours returns the original result instead of creating a second record. Same value with a different body ⇒ 422.
taskIdGUIDpathyes—
commentstringbodyno—

Example

curl -X POST https://api.nextx.vn/api/v1/office/approvals/tasks/<taskId>/reject \
  -H "Authorization: Bearer <ACCESS_TOKEN>" \
  -H "Idempotency-Key: 7f3c2a90-…" \
  -H "Content-Type: application/json" \
  -d '{
    "comment": "..."
  }'

Sample response

Response schema is being synced from source.