openapi: 3.0.3
info:
title: Baserow API spec Admin Database table calendar view API
version: 2.2.2
description: 'For more information about our REST API, please visit [this page](https://baserow.io/docs/apis%2Frest-api).
For more information about our deprecation policy, please visit [this page](https://baserow.io/docs/apis%2Fdeprecations).'
contact:
url: https://baserow.io/contact
license:
name: MIT
url: https://github.com/baserow/baserow/blob/develop/LICENSE
tags:
- name: Database table calendar view
paths:
/api/database/views/calendar/{slug}/public/rows/:
get:
operationId: public_list_database_table_calendar_view_rows
description: "Responds with serialized rows grouped by the view's date field options related to the `slug` if the calendar view is publicly shared. Additional query parameters can be provided to control the `limit` and `offset` per select option. \n\nThis is a **premium** feature."
parameters:
- in: query
name: filter__{field}__{filter}
schema:
type: string
description: "The rows can optionally be filtered by the same view filters available for the views. Multiple filters can be provided if they follow the same format. The field and filter variable indicate how to filter and the value indicates where to filter on.\n\nFor example if you provide the following GET parameter `filter__field_1__equal=test` then only rows where the value of field_1 is equal to test are going to be returned.\n\nThe following filters are available: equal, not_equal, filename_contains, files_lower_than, has_file_type, contains, contains_not, contains_word, doesnt_contain_word, length_is_lower_than, higher_than, higher_than_or_equal, lower_than, lower_than_or_equal, is_even_and_whole, date_equal, date_before, date_before_or_equal, date_after_days_ago, date_after, date_after_or_equal, date_not_equal, date_equals_today, date_before_today, date_after_today, date_within_days, date_within_weeks, date_within_months, date_equals_days_ago, date_equals_months_ago, date_equals_years_ago, date_equals_week, date_equals_month, date_equals_day_of_month, date_equals_year, date_is, date_is_not, date_is_before, date_is_on_or_before, date_is_after, date_is_on_or_after, date_is_within, single_select_equal, single_select_not_equal, single_select_is_any_of, single_select_is_none_of, link_row_has, link_row_has_not, link_row_contains, link_row_not_contains, boolean, empty, not_empty, multiple_select_has, multiple_select_has_not, multiple_collaborators_has, multiple_collaborators_has_not, user_is, user_is_not, has_value_equal, has_not_value_equal, has_value_contains, has_not_value_contains, has_value_contains_word, has_not_value_contains_word, has_value_length_is_lower_than, has_all_values_equal, has_empty_value, has_not_empty_value, has_any_select_option_equal, has_none_select_option_equal, has_value_lower, has_value_lower_or_equal, has_value_higher, has_value_higher_or_equal, has_not_value_higher_or_equal, has_not_value_higher, has_not_value_lower_or_equal, has_not_value_lower, has_date_equal, has_not_date_equal, has_date_before, has_not_date_before, has_date_on_or_before, has_not_date_on_or_before, has_date_on_or_after, has_not_date_on_or_after, has_date_after, has_not_date_after, has_date_within, has_not_date_within.\n\n**Please note that if the `filters` parameter is provided, this parameter will be ignored.** \n\n"
- in: query
name: filter_type
schema:
type: string
description: '`AND`: Indicates that the rows must match all the provided filters.
`OR`: Indicates that the rows only have to match one of the filters.
This works only if two or more filters are provided.
**Please note that if the `filters` parameter is provided, this parameter will be ignored.**'
- in: query
name: filters
schema:
type: string
description: "A JSON serialized string containing the filter tree to apply to this view. The filter tree is a nested structure containing the filters that need to be applied. \n\nAn example of a valid filter tree is the following:`{\"filter_type\": \"AND\", \"filters\": [{\"field\": 1, \"type\": \"equal\", \"value\": \"test\"}]}`. The `field` value must be the ID of the field to filter on, or the name of the field if `user_field_names` is true.\n\nThe following filters are available: equal, not_equal, filename_contains, files_lower_than, has_file_type, contains, contains_not, contains_word, doesnt_contain_word, length_is_lower_than, higher_than, higher_than_or_equal, lower_than, lower_than_or_equal, is_even_and_whole, date_equal, date_before, date_before_or_equal, date_after_days_ago, date_after, date_after_or_equal, date_not_equal, date_equals_today, date_before_today, date_after_today, date_within_days, date_within_weeks, date_within_months, date_equals_days_ago, date_equals_months_ago, date_equals_years_ago, date_equals_week, date_equals_month, date_equals_day_of_month, date_equals_year, date_is, date_is_not, date_is_before, date_is_on_or_before, date_is_after, date_is_on_or_after, date_is_within, single_select_equal, single_select_not_equal, single_select_is_any_of, single_select_is_none_of, link_row_has, link_row_has_not, link_row_contains, link_row_not_contains, boolean, empty, not_empty, multiple_select_has, multiple_select_has_not, multiple_collaborators_has, multiple_collaborators_has_not, user_is, user_is_not, has_value_equal, has_not_value_equal, has_value_contains, has_not_value_contains, has_value_contains_word, has_not_value_contains_word, has_value_length_is_lower_than, has_all_values_equal, has_empty_value, has_not_empty_value, has_any_select_option_equal, has_none_select_option_equal, has_value_lower, has_value_lower_or_equal, has_value_higher, has_value_higher_or_equal, has_not_value_higher_or_equal, has_not_value_higher, has_not_value_lower_or_equal, has_not_value_lower, has_date_equal, has_not_date_equal, has_date_before, has_not_date_before, has_date_on_or_before, has_not_date_on_or_before, has_date_on_or_after, has_not_date_on_or_after, has_date_after, has_not_date_after, has_date_within, has_not_date_within.\n\n**Please note that if this parameter is provided, all other `filter__{field}__{filter}` will be ignored, as well as the `filter_type` parameter.**"
- in: query
name: from_timestamp
schema:
type: string
format: date-time
description: Restricts results based on the calendar date field.
required: true
- in: query
name: limit
schema:
type: integer
description: Defines how many rows per day should be returned by default. This value can be overwritten per select option.
- in: query
name: limit_linked_items
schema:
type: integer
description: if provided, the maximum number of relationships per link row field in the response. If not provided, all the relationships will be returned.
- in: query
name: offset
schema:
type: integer
description: Defines from which offset the rows should be returned.This value can be overwritten per select option.
- in: path
name: slug
schema:
type: string
description: Returns only rows that belong to the related view.
required: true
- in: query
name: to_timestamp
schema:
type: string
format: date-time
description: Restricts results based on the calendar date field.
required: true
- in: query
name: user_timezone
schema:
type: string
default: UTC
description: 'User''s timezone will be taken into account for date fieldtypes that have a time and don''t enforce a timezone. The timezone will be used for aggregating the dates. For date fields without a time this will be ignored and UTC will be forced. '
tags:
- Database table calendar view
security:
- UserSource JWT: []
- JWT: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CalendarViewExampleResponse'
description: ''
'401':
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Machine readable error indicating what went wrong.
enum:
- ERROR_NO_AUTHORIZATION_TO_PUBLICLY_SHARED_VIEW
detail:
oneOf:
- type: string
format: string
description: Human readable details about what went wrong.
- type: object
format: object
description: Machine readable object about what went wrong.
description: ''
'400':
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Machine readable error indicating what went wrong.
enum:
- ERROR_CALENDAR_VIEW_HAS_NO_DATE_FIELD
- ERROR_FILTER_FIELD_NOT_FOUND
- ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST
- ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD
- ERROR_FILTERS_PARAM_VALIDATION_ERROR
detail:
oneOf:
- type: string
format: string
description: Human readable details about what went wrong.
- type: object
format: object
description: Machine readable object about what went wrong.
description: ''
'404':
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Machine readable error indicating what went wrong.
enum:
- ERROR_VIEW_DOES_NOT_EXIST
detail:
oneOf:
- type: string
format: string
description: Human readable details about what went wrong.
- type: object
format: object
description: Machine readable object about what went wrong.
description: ''
/api/database/views/calendar/{view_id}/:
get:
operationId: list_database_table_calendar_view_rows
description: 'Responds with serialized rows grouped by date regarding view''s date fieldif the user is authenticated and has access to the related workspace.
This is a **premium** feature.'
parameters:
- in: query
name: filter__{field}__{filter}
schema:
type: string
description: "The rows can optionally be filtered by the same view filters available for the views. Multiple filters can be provided if they follow the same format. The field and filter variable indicate how to filter and the value indicates where to filter on.\n\nFor example if you provide the following GET parameter `filter__field_1__equal=test` then only rows where the value of field_1 is equal to test are going to be returned.\n\nThe following filters are available: equal, not_equal, filename_contains, files_lower_than, has_file_type, contains, contains_not, contains_word, doesnt_contain_word, length_is_lower_than, higher_than, higher_than_or_equal, lower_than, lower_than_or_equal, is_even_and_whole, date_equal, date_before, date_before_or_equal, date_after_days_ago, date_after, date_after_or_equal, date_not_equal, date_equals_today, date_before_today, date_after_today, date_within_days, date_within_weeks, date_within_months, date_equals_days_ago, date_equals_months_ago, date_equals_years_ago, date_equals_week, date_equals_month, date_equals_day_of_month, date_equals_year, date_is, date_is_not, date_is_before, date_is_on_or_before, date_is_after, date_is_on_or_after, date_is_within, single_select_equal, single_select_not_equal, single_select_is_any_of, single_select_is_none_of, link_row_has, link_row_has_not, link_row_contains, link_row_not_contains, boolean, empty, not_empty, multiple_select_has, multiple_select_has_not, multiple_collaborators_has, multiple_collaborators_has_not, user_is, user_is_not, has_value_equal, has_not_value_equal, has_value_contains, has_not_value_contains, has_value_contains_word, has_not_value_contains_word, has_value_length_is_lower_than, has_all_values_equal, has_empty_value, has_not_empty_value, has_any_select_option_equal, has_none_select_option_equal, has_value_lower, has_value_lower_or_equal, has_value_higher, has_value_higher_or_equal, has_not_value_higher_or_equal, has_not_value_higher, has_not_value_lower_or_equal, has_not_value_lower, has_date_equal, has_not_date_equal, has_date_before, has_not_date_before, has_date_on_or_before, has_not_date_on_or_before, has_date_on_or_after, has_not_date_on_or_after, has_date_after, has_not_date_after, has_date_within, has_not_date_within.\n\n**Please note that if the `filters` parameter is provided, this parameter will be ignored.** \n\n\n\n**Please note that by passing the filter parameters the view filters saved for the view itself will be ignored.**"
- in: query
name: filter_type
schema:
type: string
description: '`AND`: Indicates that the rows must match all the provided filters.
`OR`: Indicates that the rows only have to match one of the filters.
This works only if two or more filters are provided.
**Please note that if the `filters` parameter is provided, this parameter will be ignored.**'
- in: query
name: filters
schema:
type: string
description: "A JSON serialized string containing the filter tree to apply to this view. The filter tree is a nested structure containing the filters that need to be applied. \n\nAn example of a valid filter tree is the following:`{\"filter_type\": \"AND\", \"filters\": [{\"field\": 1, \"type\": \"equal\", \"value\": \"test\"}]}`. The `field` value must be the ID of the field to filter on, or the name of the field if `user_field_names` is true.\n\nThe following filters are available: equal, not_equal, filename_contains, files_lower_than, has_file_type, contains, contains_not, contains_word, doesnt_contain_word, length_is_lower_than, higher_than, higher_than_or_equal, lower_than, lower_than_or_equal, is_even_and_whole, date_equal, date_before, date_before_or_equal, date_after_days_ago, date_after, date_after_or_equal, date_not_equal, date_equals_today, date_before_today, date_after_today, date_within_days, date_within_weeks, date_within_months, date_equals_days_ago, date_equals_months_ago, date_equals_years_ago, date_equals_week, date_equals_month, date_equals_day_of_month, date_equals_year, date_is, date_is_not, date_is_before, date_is_on_or_before, date_is_after, date_is_on_or_after, date_is_within, single_select_equal, single_select_not_equal, single_select_is_any_of, single_select_is_none_of, link_row_has, link_row_has_not, link_row_contains, link_row_not_contains, boolean, empty, not_empty, multiple_select_has, multiple_select_has_not, multiple_collaborators_has, multiple_collaborators_has_not, user_is, user_is_not, has_value_equal, has_not_value_equal, has_value_contains, has_not_value_contains, has_value_contains_word, has_not_value_contains_word, has_value_length_is_lower_than, has_all_values_equal, has_empty_value, has_not_empty_value, has_any_select_option_equal, has_none_select_option_equal, has_value_lower, has_value_lower_or_equal, has_value_higher, has_value_higher_or_equal, has_not_value_higher_or_equal, has_not_value_higher, has_not_value_lower_or_equal, has_not_value_lower, has_date_equal, has_not_date_equal, has_date_before, has_not_date_before, has_date_on_or_before, has_not_date_on_or_before, has_date_on_or_after, has_not_date_on_or_after, has_date_after, has_not_date_after, has_date_within, has_not_date_within.\n\n**Please note that if this parameter is provided, all other `filter__{field}__{filter}` will be ignored, as well as the `filter_type` parameter.**\n\n**Please note that by passing the filters parameter the view filters saved for the view itself will be ignored.**"
- in: query
name: from_timestamp
schema:
type: string
format: date-time
description: Restricts results based on the calendar date field.
required: true
- in: query
name: include
schema:
type: string
description: A comma separated list allowing the values of `field_options` and `row_metadata` which will add the object/objects with the same name to the response if included. The `field_options` object contains user defined view settings for each field. For example the field's width is included in here. The `row_metadata` object includes extra row specific data on a per row basis.
- in: query
name: limit
schema:
type: integer
description: Defines how many rows per day should be returned by default. This value can be overwritten per select option.
- in: query
name: limit_linked_items
schema:
type: integer
description: if provided, the maximum number of relationships per link row field in the response. If not provided, all the relationships will be returned.
- in: query
name: offset
schema:
type: integer
default: 0
description: Defines from which offset the rows should be returned.
- in: query
name: search
schema:
type: string
description: If provided only rows with data that matches the search query are going to be returned.
- in: query
name: search_mode
schema:
type: string
description: If provided, allows API consumers to determine what kind of search experience they wish to have. If the default `SearchMode.FT_WITH_COUNT` is used, then Postgres full-text search is used. If `SearchMode.COMPAT` is provided then the search term will be exactly searched for including whitespace on each cell. This is the Baserow legacy search behaviour.
- in: query
name: to_timestamp
schema:
type: string
format: date-time
description: Restricts results based on the calendar date field.
required: true
- in: query
name: user_timezone
schema:
type: string
default: UTC
description: 'User''s timezone will be taken into account for date fieldtypes that have a time and don''t enforce a timezone. The timezone will be used for aggregating the dates. For date fields without a time this will be ignored and UTC will be forced. '
- in: path
name: view_id
schema:
type: integer
description: Returns only rows that belong to the related view's table.
required: true
tags:
- Database table calendar view
security:
- UserSource JWT: []
- JWT: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CalendarViewExampleResponse'
description: ''
'400':
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Machine readable error indicating what went wrong.
enum:
- ERROR_USER_NOT_IN_GROUP
- ERROR_CALENDAR_VIEW_HAS_NO_DATE_FIELD
- ERROR_FEATURE_NOT_AVAILABLE
- ERROR_FILTER_FIELD_NOT_FOUND
- ERROR_VIEW_FILTER_TYPE_DOES_NOT_EXIST
- ERROR_VIEW_FILTER_TYPE_UNSUPPORTED_FIELD
- ERROR_FILTERS_PARAM_VALIDATION_ERROR
detail:
oneOf:
- type: string
format: string
description: Human readable details about what went wrong.
- type: object
format: object
description: Machine readable object about what went wrong.
description: ''
'404':
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Machine readable error indicating what went wrong.
enum:
- ERROR_VIEW_DOES_NOT_EXIST
detail:
oneOf:
- type: string
format: string
description: Human readable details about what went wrong.
- type: object
format: object
description: Machine readable object about what went wrong.
description: ''
components:
schemas:
CalendarViewExampleResponse:
type: object
properties:
rows:
type: object
additionalProperties:
$ref: '#/components/schemas/CalendarViewExampleResponseStack'
description: Every date bucket (e.g. '2023-01-01') related to the view's date field can have its own entry like this.
field_options:
type: array
items:
$ref: '#/components/schemas/CalendarViewFieldOptions'
row_metadata:
type: object
additionalProperties:
$ref: '#/components/schemas/RowMetadata'
description: An object keyed by row id with a value being an object containing additional metadata about that row. A row might not have metadata and will not be present as a key if so.
required:
- field_options
- rows
FileFieldResponse:
type: object
properties:
url:
type: string
format: uri
readOnly: true
thumbnails:
type: object
additionalProperties: {}
readOnly: true
visible_name:
type: string
name:
type: string
size:
type: integer
mime_type:
type: string
is_image:
type: boolean
image_width:
type: integer
image_height:
type: integer
uploaded_at:
type: string
format: date-time
required:
- image_height
- image_width
- is_image
- mime_type
- name
- size
- thumbnails
- uploaded_at
- url
- visible_name
RowCommentsNotificationModeEnum:
enum:
- all
- mentions
type: string
description: '* `all` - all
* `mentions` - mentions'
LinkRowValue:
type: object
properties:
id:
type: integer
readOnly: true
description: The unique identifier of the row in the related table.
value:
type: string
description: The primary field's value as a string of the row in the related table.
order:
type: string
format: decimal
pattern: ^-?\d{0,20}(?:\.\d{0,20})?$
required:
- id
CalendarViewExampleResponseStack:
type: object
properties:
count:
type: integer
description: The total count of rows that are included in this group.
results:
type: array
items:
$ref: '#/components/schemas/ExampleRowResponse'
description: All the rows that belong in this group and match provided `limit` and `offset`.
required:
- count
- results
CalendarViewFieldOptions:
type: object
properties:
hidden:
type: boolean
description: Whether or not the field should be hidden in the card.
order:
type: integer
maximum: 32767
minimum: -32768
description: The order that the field has in the view. Lower value is first.
RowMetadata:
type: object
properties:
row_comment_count:
type: integer
minimum: 0
description: How many row comments exist for this row.
row_comments_notification_mode:
$ref: '#/components/schemas/RowCommentsNotificationModeEnum'
Collaborator:
type: object
properties:
id:
type: integer
name:
type: string
readOnly: true
required:
- id
- name
ExampleRowResponse:
type: object
properties:
id:
type: integer
description: The unique identifier of the row in the table.
order:
type: string
format: decimal
pattern: ^-?\d{0,20}(?:\.\d{0,20})?$
description: Indicates the position of the row, lowest first and highest last.
metadata:
allOf:
- $ref: '#/components/schemas/RowMetadata'
description: Additional metadata for the row, if `include=metadata' is provided as query parameter.
field_1:
type: string
nullable: true
description: 'This field represents the `text` field. The number in field_1 is in a normal request or response the id of the field. '
field_2:
type: string
nullable: true
description: 'This field represents the `long_text` field. The number in field_2 is in a normal request or response the id of the field. '
field_3:
type: string
nullable: true
description: 'This field represents the `url` field. The number in field_3 is in a normal request or response the id of the field. '
field_4:
type: string
nullable: true
description: 'This field represents the `email` field. The number in field_4 is in a normal request or response the id of the field. '
maxLength: 254
field_5:
type: string
format: decimal
pattern: ^-?\d{0,50}(?:\.\d{0,0})?$
nullable: true
description: 'This field represents the `number` field. The number in field_5 is in a normal request or response the id of the field. '
field_6:
type: integer
maximum: 5
minimum: 0
default: 0
description: 'This field represents the `rating` field. The number in field_6 is in a normal request or response the id of the field. '
field_7:
type: boolean
default: false
description: 'This field represents the `boolean` field. The number in field_7 is in a normal request or response the id of the field. '
field_8:
type: string
format: date
nullable: true
description: 'This field represents the `date` field. The number in field_8 is in a normal request or response the id of the field. '
field_9:
type: string
format: date-time
description: 'This field represents the `last_modified` field. The number in field_9 is in a normal request or response the id of the field. '
field_10:
allOf:
- $ref: '#/components/schemas/Collaborator'
description: 'This field represents the `last_modified_by` field. The number in field_10 is in a normal request or response the id of the field. '
field_11:
type: string
format: date-time
description: 'This field represents the `created_on` field. The number in field_11 is in a normal request or response the id of the field. '
field_12:
allOf:
- $ref: '#/components/schemas/Collaborator'
description: 'This field represents the `created_by` field. The number in field_12 is in a normal request or response the id of the field. '
field_13:
type: number
format: float
nullable: true
description: This field represents the `duration` field. The number in field_13 is in a normal request or response the id of the field. The provided value can be a string in one of the available formats or a number representing the duration in seconds. In any case, the value will be rounded to match the field's duration format.
field_14:
type: array
items:
$ref: '#/components/schemas/LinkRowValue'
description: This field represents the `link_row` field. The number in field_14 is in a normal request or response the id of the field. This field accepts an `array` containing the ids or the names of the related rows. A name is the value of the primary key of the related row. This field also accepts a string with names separated by a comma or an array of row names. You can also provide a unique row Id.The response contains a list of objects containing the `id` and the primary field's `value` as a string for display purposes.
field_15:
type: array
items:
$ref: '#/components/schemas/FileFieldResponse'
description: This field represents the `file` field. The number in field_15 is in a normal request or response the id of the field. This field accepts an `array` containing objects with the name of the file. The response contains an `array` of more detailed objects related to the files.
field_16:
allOf:
- $ref: '#/components/schemas/SelectOption'
nullable: true
description: This field represents the `single_select` field. The number in field_16 is in a normal request or response the id of the field. This field accepts an `integer` representing the chosen select option id related to the field. Available ids can be found when getting or listing the field. The response represents chosen field, but also the value and color is exposed.
field_17:
type: array
items:
$ref: '#/components/schemas/SelectOption'
nullable: true
description: This field represents the `multiple_select` field. The number in field_17 is in a normal request or response the id of the field. This field accepts a list of `integer` each of which representing the chosen select option id related to the field. Available ids can be foundwhen getting or listing the field. You can also send a list of option names in which case the option are searched by name. The first one that matches is used. This field also accepts a string with names separated by a comma or an array of file names. The response represents chosen field, but also the value and color is exposed.
field_18:
type: string
nullable: true
description: 'This field represents the `phone_number` field. The number in field_18 is in a normal request or response the id of the field. '
maxLength: 100
field_19:
type: string
nullable: true
description: 'This field represents the `formula` field. The number in field_19 is in a normal request or response the id of the field. '
field_20:
type: string
nullable: true
description: 'This field represents the `count` field. The number in field_20 is in a normal request or response the id of the field. '
field_21:
type: string
nullable: true
description: 'This field represents the `rollup` field. The number in field_21 is in a normal request or response the id of the field. '
field_22:
type: string
nullable: true
description: 'This field represents the `lookup` field. The number in field_22 is in a normal request or response the id of the field. '
field_23:
type: array
items:
$ref: '#/components/schemas/Collaborator'
description: This field represents the `multiple_collaborators` field. The number in field_23 is in a normal request or response the id of the field. This field accepts a
# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/baserow/refs/heads/main/openapi/baserow-database-table-calendar-view-api-openapi.yml