OpenAPI Specification
openapi: 3.0.0
info:
title: Public Account Tables API
version: 1.0.0
description: 'Public API for accessing agents, flows, and analytics.
## Authentication
The Public API supports two API key types. Pass the key as a Bearer token:
```
Authorization: Bearer <YOUR_API_KEY>
```
### Account API key (GENERAL)
Account-level key that acts on behalf of the entire account. Required for account-level endpoints unless noted otherwise.
### User API key (USER)
User-level key tied to a specific user. Required for write operations and user-owned resources. **Also accepted on all account-level endpoints.**
Each operation documents which key type(s) it accepts in its **Security** section.'
license:
name: Proprietary
url: https://www.getfrontline.ai/terms-and-conditions
servers:
- url: https://prod-api.getfrontline.ai
tags:
- name: Tables
description: Manage spreadsheet-style tables
paths:
/public/v1/tables:
get:
summary: List tables
operationId: listTables
description: Returns every table for the authenticated account.
security:
- bearerAuth: []
tags:
- Tables
responses:
'200':
description: Tables list
content:
application/json:
schema:
type: object
properties:
ok:
type: boolean
enum:
- true
example: true
data:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
display_name:
type: string
example: example
type:
type: string
enum:
- table
- object
example: table
custom:
type: boolean
example: false
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
description:
type: string
example: example
emoji:
type: string
example: example
icon_color:
type: string
example: example
field_count:
type: number
example: 1
required:
- id
- name
- display_name
- type
- custom
- created_at
- updated_at
required:
- ok
- data
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
post:
summary: Create table
operationId: createTable
description: Creates a table. Columns can be supplied at creation or added later. Requires a USER API key.
security:
- bearerAuth: []
tags:
- Tables
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
minLength: 1
example: example
displayName:
type: string
minLength: 1
example: example
emoji:
type: string
example: example
icon_color:
type: string
example: example
columns:
type: array
items:
type: object
properties:
name:
type: string
minLength: 1
example: example
type:
anyOf:
- type: string
enum:
- string
- number
- boolean
- date
- tags
- relation
- autoIncrement
- dateOnly
- prismaRelation
- kanbanViewOrder
- file
- avatar
- formula
example: string
- type: string
enum:
- select
example: select
metadata:
type: object
additionalProperties:
nullable: true
type: object
record_type_id:
type: integer
minimum: 0
exclusiveMinimum: true
example: 1
recordTypeId:
type: integer
minimum: 0
exclusiveMinimum: true
example: 1
required:
- name
- type
additionalProperties: false
required:
- name
- displayName
responses:
'201':
description: Created table
content:
application/json:
schema:
type: object
properties:
ok:
type: boolean
enum:
- true
example: true
data:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
display_name:
type: string
example: example
type:
type: string
enum:
- table
- object
example: table
custom:
type: boolean
example: false
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
description:
type: string
example: example
emoji:
type: string
example: example
icon_color:
type: string
example: example
field_count:
type: number
example: 1
fields:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
key:
type: string
example: example
type:
type: string
example: example
editable:
type: boolean
example: false
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
read_only:
type: boolean
example: false
required:
type: boolean
example: false
unique:
type: boolean
example: false
is_system:
type: boolean
example: false
is_predefined:
type: boolean
example: false
default_value:
nullable: true
type: object
format:
type: string
example: example
mode:
type: string
enum:
- singleSelect
- multiSelect
- single
- multi
example: singleSelect
timezone:
type: string
example: example
decimals:
type: number
example: 1
currency:
type: string
example: example
time_format:
type: string
example: example
show_preview:
type: boolean
example: false
allowed_file_types:
type: array
items:
type: string
example: example
max_file_size:
type: number
example: 1
related_table_id:
type: number
example: 1
display_field_id:
type: number
example: 1
relation_mode:
type: string
example: example
include_activity:
type: boolean
example: false
options:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
color:
type: string
example: example
order:
type: number
example: 1
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
required:
- id
- name
- color
- order
- created_at
- updated_at
expression:
nullable: true
type: object
output_type:
type: string
example: example
apply_if:
nullable: true
type: object
number_config:
nullable: true
type: object
date_config:
nullable: true
type: object
string_config:
nullable: true
type: object
required:
- id
- name
- key
- type
- editable
- created_at
- updated_at
views:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
type:
type: string
enum:
- TABLE
- KANBAN
- RECORD
example: TABLE
is_default:
type: boolean
example: false
is_private:
type: boolean
example: false
record_type_id:
type: number
nullable: true
example: 1
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
column_order:
type: array
items:
type: string
example: example
hidden_columns:
type: array
items:
type: string
example: example
sticky_columns:
type: array
items:
type: string
example: example
grouping_field_id:
type: number
example: 1
column_ordering:
nullable: true
type: object
title_field_id:
type: number
example: 1
display_field_ids:
type: array
items:
type: number
example: 1
required:
- id
- name
- type
- is_default
- is_private
- record_type_id
- created_at
- updated_at
record_types:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
display_name:
type: string
example: example
is_default:
type: boolean
example: false
single_noun:
type: string
example: example
emoji:
type: string
example: example
icon_color:
type: string
example: example
disable_side_effects:
type: boolean
example: false
field_ids:
type: array
items:
type: number
example: 1
views:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
type:
type: string
enum:
- TABLE
- KANBAN
- RECORD
example: TABLE
is_default:
type: boolean
example: false
is_private:
type: boolean
example: false
record_type_id:
type: number
nullable: true
example: 1
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
column_order:
type: array
items:
type: string
example: example
hidden_columns:
type: array
items:
type: string
example: example
sticky_columns:
type: array
items:
type: string
example: example
grouping_field_id:
type: number
example: 1
column_ordering:
nullable: true
type: object
title_field_id:
type: number
example: 1
display_field_ids:
type: array
items:
type: number
example: 1
required:
- id
- name
- type
- is_default
- is_private
- record_type_id
- created_at
- updated_at
required:
- id
- name
- display_name
- is_default
required:
- id
- name
- display_name
- type
- custom
- created_at
- updated_at
required:
- ok
- data
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/public/v1/tables/{name}:
get:
summary: Get table
operationId: getTable
description: Returns one table including fields and views.
security:
- bearerAuth: []
tags:
- Tables
parameters:
- schema:
type: string
minLength: 1
example: tasks_board
required: true
name: name
in: path
responses:
'200':
description: Table detail
content:
application/json:
schema:
type: object
properties:
ok:
type: boolean
enum:
- true
example: true
data:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
display_name:
type: string
example: example
type:
type: string
enum:
- table
- object
example: table
custom:
type: boolean
example: false
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
description:
type: string
example: example
emoji:
type: string
example: example
icon_color:
type: string
example: example
field_count:
type: number
example: 1
fields:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
key:
type: string
example: example
type:
type: string
example: example
editable:
type: boolean
example: false
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
read_only:
type: boolean
example: false
required:
type: boolean
example: false
unique:
type: boolean
example: false
is_system:
type: boolean
example: false
is_predefined:
type: boolean
example: false
default_value:
nullable: true
type: object
format:
type: string
example: example
mode:
type: string
enum:
- singleSelect
- multiSelect
- single
- multi
example: singleSelect
timezone:
type: string
example: example
decimals:
type: number
example: 1
currency:
type: string
example: example
time_format:
type: string
example: example
show_preview:
type: boolean
example: false
allowed_file_types:
type: array
items:
type: string
example: example
max_file_size:
type: number
example: 1
related_table_id:
type: number
example: 1
display_field_id:
type: number
example: 1
relation_mode:
type: string
example: example
include_activity:
type: boolean
example: false
options:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
color:
type: string
example: example
order:
type: number
example: 1
created_at:
type: string
nullable: true
example: example
updated_at:
type: string
nullable: true
example: example
required:
- id
- name
- color
- order
- created_at
- updated_at
expression:
nullable: true
type: object
output_type:
type: string
example: example
apply_if:
nullable: true
type: object
number_config:
nullable: true
type: object
date_config:
nullable: true
type: object
string_config:
nullable: true
type: object
required:
- id
- name
- key
- type
- editable
- created_at
- updated_at
views:
type: array
items:
type: object
properties:
id:
type: number
example: 1
name:
type: string
example: example
type:
type: string
enum:
- TABLE
- KANBAN
- RECORD
example: TABLE
is_default:
# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/frontline/refs/heads/main/openapi/frontline-tables-api-openapi.yml